Nginx 配置文件的内容如下,包括三个部分:全局块、events 块和 http 块。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| user nginx; worker_processes auto;
error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;
events { worker_connections 1024; }
http { include /etc/nginx/mime.types; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333 backup; }
server { keepalive_requests 120; listen 80; server_name _;
location / { proxy_pass http://mysvr; deny 127.0.0.1; allow 172.18.5.54; } }
include /etc/nginx/conf.d/*.conf; }
|
配置文件
全局块
全局块主要设置一些影响 nginx 服务器整体运行的配置,主要包括:
- user:配置运行 Nginx 服务器的用户(组)。
- worker_processes:允许生成的 worker 数量。为了避免上下文切换,通常设置为 cpu 总核心数 -1 或等于总核心数。
- pid:守护进程 PID 文件路径。
- error_log:日志存放路径,以及日志级别。
- worker_cpu_affinity_cpumask:将 worker 绑定在某个固定的 CPU 核心上。
1 2 3 4 5 6
| user nginx; worker_processes auto;
error_log /var/log/nginx/error.log debug; pid /var/run/nginx.pid;
|
events 块
events 块涉及的配置主要影响 Nginx 服务器与用户的网络连接。
常用的设置包括:
accept_mutex:off 或者 on,表示是否开启用户请求至各 worker 进程时使用的负载均衡锁(网络连接序列化)。
multi_accept:是否允许同时接收多个网络连接,默认为 off。
use:选取哪种事件驱动模型来处理连接请求,默认为 epoll。可选有 select、poll、kqueue、epoll、resig、eventport。
worker_connections:每个 worder 可以同时支持的最大连接数。
1 2 3 4
| events { worker_connections 1024; }
|
http 块
代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。http 块也包括 http 全局块、server 块。
http 全局块
- include:文件扩展名与文件类型映射表。
- default_type:默认文件类型,默认为 text/plain。
- keepalive_timeout:连接超时事件。
- error_page:错误页。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| http { include /etc/nginx/mime.types; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
error_page 404 https://www.baidu.com;
include /etc/nginx/conf.d/*.conf; }
|
server 块
每个 http 块可以包括多个 server 块,而每个 server 块也分为全局 server 块,以及可以同时包含多个 location 块。
全局 server 块配置包括:
- keepalive_requests:单连接请求上限次数。
- listen:监听端口。
- server_name:监听地址。
location 块包括:
- root:根目录。
- index:设置默认页。
- proxy_pass:请求转向的上游服务器(用 upstream 定义)。
- deny:拒绝的 IP。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333 backup; }
server { keepalive_requests 120; listen 80; server_name _; location / { proxy_pass http://mysvr; deny 127.0.0.1; allow 172.18.5.54; } }
|