Nginx配置详解
Nginx是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
Nginx (engine x) 也是一个高性能的 HTTP 和反向代理服务,也是一个 IMAP/POP3/SMTP 服务。
Nginx配置文件结构
Nginx 的配置文件 nginx.conf
位于其安装目录的 conf
目录下。
nginx.conf
由多个块组成,最外面的块是 main
。main
包含 Events
和 http
。http
包含 upstream
和多个 server
。server
又包含多个location
。
main
(全局设置)、server
(主机设置)、upstream
(负载均衡服务器设置)和 location
(URL匹配特定位置的设置)。
main
块设置的指令将影响其他所有设置;server
块的指令主要用于指定主机和端口;upstream
指令主要用于负载均衡,设置一系列的后端服务器;location
块用于匹配网页位置。
这四者之间的关系:server
继承 main
,location
继承 server
,upstream
既不会继承其他设置也不会被继承。
在这四个部分当中,每个部分都包含若干指令,这些指令主要包含 Nginx 的主模块指令、事件模块指令、HTTP 核心模块指令,同时每个部分还可以使用其他 HTTP 模块指令,例如 Http SSL模块、HttpGzip Static 模块和 Http Addition 模块等。
Nginx的全局配置
每个配置选项的含义解释如下:
user
是个主模块指令,指定 Nginx Worker 进程运行用户以及用户组,默认由nobody
账号运行。worker_processes
是个主模块指令,指定了 Nginx 要开启的进程数。每个 Nginx 进程平均耗费10M~12M内存。建议指定和 CPU 的数量一致即可。error_log
是个主模块指令,用来定义全局错误日志文件。日志输出级别有 debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。pid
是个主模块指令,用来指定进程pid
的存储文件位置。worker_rlimit_nofile
用于绑定 worker 进程和 CPU,限Linux内核2.4以上可用。
events
事件指令是设定 Nginx 的工作模式及连接数上限:
use
是个事件模块指令,用来指定 Nginx 的工作模式。Nginx 支持的工作模式有 select、poll、kqueue、epoll、rtsig 和 /dev/poll。其中 select 和 poll 都是标准的工作模式,kqueue 和 epoll 是高效的工作模式,不同的是 epoll 用在 Linux 平台上,而 kqueue 用在 BSD 系统中。对于 Linux 系统,epoll 工作模式是首选。
worker_connections
也是个事件模块指令,用于定义 Nginx 每个进程的最大连接数,默认是1024。最大客户端连接数由 worker_processes 和 worker_connections 决定,即 Max_client=worker_processes*worker_connections
。
在作为反向代理时,max_clients 变为:max_clients = worker_processes * worker_connections/4
。
进程的最大连接数受 Linux 系统进程的最大打开文件数限制,在执行操作系统命令 ulimit -n 65536
后 worker_connections 的设置才能生效。