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 的设置才能生效。
Nginx的反向代理配置
server {
listen 80;
server_name cikaros.top;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name cikaros.top;
ssl_certificate /etc/nginx/ssl/cikaros.top.crt;
ssl_certificate_key /etc/nginx/ssl/cikaros.top.key;
client_max_body_size 10M;
location / {
proxy_pass http://10.1.1.100:2561;
proxy_set_header Host $host:$proxy_port;
}
}