Nginx 入门实战(1)--简介及安装
本文介绍的 Nginx 为开源版本 Nginx,官网地址为:https://nginx.org/en/,如需了解商业版本,可访问商业版官网:https://www.nginx-cn.net/;文中所使用到的软件版本:Nginx 1.22.1、pcre 8.43、opnessl 1.1.1s、zlib 1.2.11、CentOS 7.9.2009。
1、简介
nginx [engine x] 是一款 Http 和反向代理服务器、邮件代理服务器和通用TCP / UDP 代理服务器。其将源代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。Nginx 可以在大多数 Unix Linux OS 上编译运行,并有 Windows 移植版。Nginx 具有如下功能。
1.1、HTTP 基础功能
- 提供静态和索引文件服务,自动索引; 打开文件描述符缓存;
- 通过缓存加速反向代理; 负载均衡和容错;
- 通过缓存 FastCGI、uwsgi、SCGI 和 服务器来提高访问速度;负载均衡和容错;
- 模块化架构。过滤器包括 gzipping、字节范围、分块响应、XSLT、SSI 和图像转换过滤器。如果由代理服务器或 FastCGI/uwsgi/SCGI 服务器处理请求,单个页面中的多个 SSI 可以并行处理;
- 支持SSL和TLS SNI;
- 支持基于权重和依赖的优先级的 HTTP/2。
1.2、其他 HTTP 功能
- 基于名称和 IP 的虚拟服务器;
- 支持 Keep-alive 和管线化连接;
- 访问日志格式、缓冲日志写入、快速日志轮换和 syslog 日志记录;
- 3xx-5xx 错误代码重定向;
- 重写模块:使用正则表达式更改 URI;
- 根据客户端地址执行不同的功能;
- 基于客户端 IP 地址、密码(HTTP基本认证)和子请求结果的访问控制;
- 验证 HTTP Referer;
- PUT、DELETE、MKCOL、COPY 和 MOVE 方法;
- FLV 和 MP4 流媒体;
- 响应速率限制;
- 限制来自一个地址的并发连接或请求数量;
- 基于 IP 的地理位置;
- A/B 测试;
- 请求镜像;
- 嵌入式 Perl;
- njs 脚本语言。
1.3、邮件代理功能
- 用户通过外部 HTTP 身份验证服务器重定向到 IMAP 或 POP3 服务器;
- 使用外部 HTTP 身份验证服务器进行用户身份验证,并将连接重定向到内部 SMTP 服务器;
- 认证方法:
- POP3:USER/PASS、APOP、AUTH LOGIN/PLAIN/CRAM-MD5;
- IMAP:LOGIN、AUTH LOGIN/PLAIN/CRAM-MD5;
- SMTP:AUTH LOGIN/PLAIN/CRAM-MD5;
- SSL支持;
- STARTTLS 和 STLS支持。
1.4、TCP/UDP 代理功能
- 通用 TCP 和 UDP 代理;
- 支持 SSL 和 TLS SNI 的 TCP;
- 负载均衡和容错;
- 基于客户端地址的访问控制;
- 根据客户端地址执行不同的功能;
- 限制来自一个地址的并发连接数量;
- 访问日志格式,缓冲日志写入,快速日志轮换和 syslog 日志记录;
- 基于 IP 的地理位置;
- A/B 测试;
- njs 脚本语言。
2、安装
2.1、下载源码
nginx 源码:https://nginx.org/en/download.html
pcre 源码:http://www.pcre.org/
openssl 源码:https://www.openssl.org/source/
zlib 源码:http://www.zlib.net/
下载后解压:
tar zxvf nginx-1.22.1.tar.gz unzip pcre-8.43.zip tar zxvf openssl-1.1.1s.tar.gz tar zxvf zlib-1.2.11.tar.gz
2.2、编译安装
cd nginx-1.22.1 ./configure --prefix=/home/mongo/soft/nginx-1.22.1 --with-pcre=/home/mongo/installfile/pcre-8.43 --with-http_stub_status_module --with-http_ssl_module --with-openssl=/home/mongo/installfile/openssl-1.1.1s --with-zlib=/home/mongo/installfile/zlib-1.2.11 --with-mail --with-stream make make install
常用编译参数说明:
参数 | 说明 | 默认值 |
--help | 显示帮助信息 | |
--prefix=path |
设置 Nginx 的安装目录 | /usr/local/nginx |
--sbin-path=path |
设置 Nginx 可执行命令的目录 | prefix/sbin/nginx |
--conf-path=path |
设置 Nginx 的配置文件 | prefix/conf/nginx.conf |
--error-log-path=path |
设置 Nginx 的错误日志文件 | prefix/logs/error.log |
--pid-path=path |
设置 Nginx pid 文件 | prefix/logs/nginx.pid |
--http-log-path=path |
设置 Http 访问日志文件 | prefix/logs/access.log |
--with-http_ssl_module | 启用 ssl 模块 | |
--with-mail --with-mail=dynamic |
启用 POP3/IMAP4/SMTP 邮件代理服务 | |
--with-stream --with-stream=dynamic |
启用 TCP/UDP 代理服务 | |
--with-pcre=path |
指定 pcre 源码的目录 | |
--with-zlib=path |
指定 zlib 源码的目录 | |
--with-openssl=path |
指定 openssl 源码的目录 | |
--with-http_stub_status_module | 启用 Http 服务状态模块 |
更多参数说明可参考官网:https://nginx.org/en/docs/configure.html。
2.3、启动
Nginx 默认配置了一个端口为 80 Http 服务器,使用普通用户启动需要修改该端口;编辑 conf/nginx.conf 文件:
http { include mime.types; default_type application/octet-stream; ... server { listen 8080; ...
执行启动命令:
sbin/nginx
启动后访问 8080 端口:
2.4、停止及重启
sbin/nginx -s stop #停止
sbin/nginx -s reload #重启
2.5、sbin/nginx 命令详解
使用 sbin/nginx -h 查看用法:
nginx [-?hvVtTq] [-s signal] [-p prefix]
[-e filename] [-c filename] [-g directives]
参数说明:
参数 | 说明 |
-?,-h | 显示帮助 |
-v | 显示版本 |
-V | 显示版本及配置信息 |
-t | 测试配置 |
-T | 测试并输出配置 |
-q | 测试时不输出错误信息 |
-s signal | 发送信号到主进程,信号可为:stop, quit, reopen, reload |
-p prefix | 指定 nginx 的安装目录 |
-e filename | 指定错误日志文件 |
-c filename | 指定 nginx 配置文件 |
-g directives | 设置全局指令 |