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;      } }
  |