Nginx – 为优质网络服务当家理纪


Ngnix 是一款轻量级、高性能的 Web 应用服务器软件,同时也是一款代理服务器软件。它可以作为反向代理服务器软件,也可以作为电子邮件(IMAP/POP)代理服务软件。

作为服务器软件领域的佼佼者,Ngnix 真正体现了“小身体,大能量”的特色。软件本身小巧精致,配置和使用简单,但功能非常强大。其典型功能特点有,

  • 高性能 Web 服务器
    • 有报告表明能支持高达 50000 个并发数
    • 反向代理服务器
    • 负载均衡
    • 动静结合

在网络应用架构中,Nginx 使用非常广泛,具有重要的地位和作用。

Nginx 安装部署

需要安装 Ngnix 主程序和相关的配套支撑库

  • Nginx 主程序
    • 可直接用软件仓库的版本,可以手动编译安装。
    • 官网网站:Nginx.org
    • 可执行程序文件:nginx (bin 或 sbin 中)
  • PCRE 库
    • PCRE (Perl Compatible Regular Expressions) 是一个 Perl 库,包括 Perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式
    • 库名称:libpcre3、libpcre3-dev (Ubuntu 18.04)
  • zlib 库
    • zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip
    • 库名称:zliblg-dev (Ubuntu 18.04)
  • OpenSSL 库
    • OpenSSL 是一个强大的安全套接字层密码库。囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
      nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),需要安装 OpenSSL 库。
    • 库名称:openssl (Ubuntu 18.04)

Nginx 基本指令

使用可执行文件 nginx 启动服务。

./nginx

启动后,可以通过 -s 参数对 nginx 进行控制。

nginx -s signal
注:-s 参数表明采用向 nginx 发送信号的方式

指令 备注
nginx -s quit 优雅停止。此方式是待 nginx 进程处理任务完毕进行停止
nginx -s stop 强制停止。此方式先查出 nginx 进程 id,再使用 kill 命令强制杀掉进程
nginx -s reload 重启服务,重新加载更新后配置(使用最多的指令,尤其是运行中进行配置更改)
ngnix -s reopen 重新打开 log 文件
nginx -t nginx 不运行,仅仅对配置文件进行测试

Nginx 配置文件的基本结构

nginx 的所有功能都是通过配置文件进行添加。

pic-1

ngnix.conf 是 nginx 的中心配置文件,文件主要由三个大的部分组成:全局块、events 块、http 块。采用了一种“递进式”的结构布局。

全局块

全局块配置影响 nginx 服务器整体运行的配置指令。主要设置包括,

  • 运行 nginx 服务器的用户或用户组;
  • 允许生成的 worker process 数量;
  • 进程 pid 的存放路径;
  • 配置文件的引用,重点是服务器整体功能模块的配置
    • /etc/nginx/modules-enabled/*.conf

events 块

events 块配置影响 nginx 服务器与用户的网络连接。

http 块(包含多个 server 块)

http 块是 nginx 服务器中配置最频繁的部分。又进一步可细分为 “http 全局块”“server 块”

(1) http 全局块

http 全局块针对 http 的全局参数需求设计,主要设置包括,

  • 文件引入
  • MIME-TYPE类型
  • 日志定义
  • 连接超时时间
  • ……

(2) server 块

server 块主要针对“虚拟主机”的概念设计。

“虚拟主机”是一种概念上的主机,从用户角度看,一台“虚拟主机”就和一台独立硬件的主机完全一样。

每个 http 块可以包括多个 server 块,每个 server 块就相当于一个虚拟主机。如此,每个 http 块就包括对多个“虚拟主机”的设置。

每个 server 块又进一步可细分为 “全局 server 块” 和多个 “location 块”

  • 全局 server 块对一个“虚拟主机”的核心参数进行设置,如“监听端口”、“主机名”、“主机的根目录”等。
  • location 块对一个“虚拟主机”的不同访问路径进行对应的处理设置。

Reference

  1. https://www.cnblogs.com/yangyh11/p/9801466.html
  2. https://www.youtube.com/playlist?list=PLmOn9nNkQxJFqjd8stdqdXgTnDDpr0baO
  3. Nginx concepts I wish I knew years ago (中文)
  4. https://blog.csdn.net/weixin_34290390/article/details/92931579
  5. https://zhuanlan.zhihu.com/p/348351797

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注