Nginx的功能特性
- 基本Http服务,可以作为Http代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL
- 高级Http服务,可以进行自定义配置,支持虚拟主机,支持URL重定向,支持网络监控,支持流媒体传输等
- 邮件代理服务器,支持IMAP/POP3代理服务功能,支持内部SMTP代理服务功能
基本HTPP服务
- 处理静态文件,如HTML网页以及请求
- 打开并自行管理文件描述符缓存
- 提供反向代理服务,并且可用缓存加速反向代理
- 提供远程
FastCGI(通用网关接口)
服务的缓存机制 - 模块化提供过滤器功能,
gzip压缩 ranges支持 chunked响应 XSLT SSI 图像缩放
针对包含多个SSI的页面,经由反向代理SSI过滤器可并行处理 - 支持安全套接协议SSL
高级HTTP服务
- 支持基于名字和IP的虚拟主机设置
- 支持HTTP/1.0 中的keep-alive模式和管线模型(PipelLined)连接
- 支持重新升级时,无需中断正在处理的请求
- 自定义访问日志格式、带缓存的日志写操作以及快速日志轮转
- 提供3xx 5xx错误代码重定向功能
- 支持重写模块扩展
- 支持HTTP DAV模块,从而为HTTP DAV模块提供
PUT DELETE MKCOL COPY MOVE
方法 - 支持
FLV
流和MP4
流传输 - 支持网络监控,访问控制、速度限制或请求限制等
- 支持嵌入
perl
语言
邮件代理服务
- 支持使用外部HTTP认证服务器重定向用户到IMAP/POP3后端,并支持
IMAP
认证方式和POP3
认证方式 - 支持使用外部HTTP认证服务器器认证用户后重定向连接到内部SMTP后端,并支持SMTP认证方式
- 支持邮件代理服务下的安全套接层安全协议SSL
- 支持纯文本通信协议的扩展协议
STARTTLS
常用功能
- HTTP代理和反向代理
请求稳定,后端转发与业务配合分离,配置灵活,支持判断表达式
- 负载均衡
1. 将单一的重负载分担到多个网络节点上做并行处理,每个节点处理结束后将结果汇总给用户提高网络系统的处理能力
2. 将大量的前端并发访问或者数据流量分担到多个后端网络节点上分别处理
- nginx的负载均衡策略
-内置策略
:轮询
加权轮询
IP HASH
-扩展策略
主要通过第三方模块实现,常见有url hash
- WEB缓存
主要由Proxy_Cache
(提供代理服务时,对后端服务器返回内容进行URL缓存) 和FastCGI_Cache
(对FastCGI程序缓存)指令集构成
安装部署
编译
- 下载nginx-1.12.1.tar.gz
- 解压后进入nginx-1.12.1目录执行
./configure --prefix=/usr/local/nginx-1.12
需要安装
gcc等编译工具 yum -y install gcc openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
- 执行
make
编译,等待编译结束后执行make install
安装至指定目录 - 进入
/usr/local/nginx-1.12
,可以看到具有4个目录:
conf
存放了所有配置文件html
运行中的html文件logs
日志目录sbin
服务主程序
启停
nginx
服务在运行时会保持一个主进程和一个或者多个worker process
工作进程,通过给主进程发送信号控制服务的启停。
-nginx
可接受的信号kill -USR1 ${nginx.pid}
信号 | 作用 |
---|---|
TERM 或 INT | 快速停止服务 |
QUIT | 平缓停止服务 |
HUP | 平滑重启 |
USR1 | 重新打开日志文件 |
USR2 | 平滑升级 |
WINTH | 平缓停止Worker Process |
#检查配置文件是否有错误
./nginx -t
#指定配置文件
./nginx -c conf_file
#优雅停止
./nginx -s stop
配置
主要描述
nginx.conf
文件的内容
nginx.conf
文件结构
主要由三块组成
全局块
events块
http块
,http块
中包含http全局块
和多个server块
,每个server
块中包含server全局块
和多个location块
,采用就近原则
生效
全局块
配置一些影响整体运行的指令,通常有
服务器用户组
允许生成的worker process
nginx.pid存放路径
日志存放路径
类型
配置文件引入
events块
影响nginx服务器与用户的网络连接,这一块的设置对服务的性能影响较大。通常有
是否开启对WP下的网络进行序列化
是否允许同时接受多个网络连接
事件驱动模型
每个WP可以同时支持处理的最大连接数
http块
重要组成部分,代理、缓存和日志定义、第三方模块的配置。 通常配置
文件引入
MIME-TYPE定义
日志