目录
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)
- OpenSSL 是一个强大的安全套接字层密码库。囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
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 的所有功能都是通过配置文件进行添加。
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 块对一个“虚拟主机”的不同访问路径进行对应的处理设置。