nginx.conf配置
配置文件结构
1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。
全局块
#定义Nginx运行的用户 用户组。window下不指定。
user nginx nginx ;
#nginx进程数,建议设置为等于CPU总核心数
worker_processes
#配置利用多核CPU。有几核CPU每组就有几位数
worker_cpu_affinity
示例:
worker_cpu_affinity 01 10;
2核CPU,使用第一个和第二个
worker_processes 2;
worker_cpu_affinity 0101 1010;
表示 4核cpu,开启2个进程, 0101表示开启第一个和第三个内核,1010表示开启第二个和第四个内核
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
8核cpu,开启8个进程
#错误日志路径
error_log
#pid位置
pid
#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log ar/loginx/error.log info;
events块
#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。
use epoll;
#单个进程最大连接数(最大连接数=连接数*进程数)
worker_connections 65535;
#打开同时接受多个新网络连接请求的功能。
multi_accept on;
#accept_mutex是Nginx的负载均衡锁,accept_mutex这把锁可以让多个worker进程轮流地、序列化地与新的客户端建立TCP连接。当某一个worker进程建立的连接数量达到worker_connections配置的最大连接数的7/8时,会大大地减小该worker进程试图建立新TCP连接的机会,以此实现所有worker进程之上处理的客户端请求数尽量接近。
accept锁默认是打开的,如果关闭它,那么建立TCP连接的耗时会更短,但worker进程之间的负载会非常不均衡,因此不建议关闭它。
accept_mutex on;
#在使用accept锁后,同一时间只有一个worker进程能够取到accept锁。这个accept锁不是阻塞锁,如果取不到会立刻返回。如果有一个worker进程试图取accept锁而没有取到,它至少要等accept_mutex_delay定义的时间间隔后才能再次试图取锁。
accept_mutex_delay 50ms;
http块
#文件扩展名与文件类型映射表
include mime.types;
#默认文件类型
default_type text/html;
#引用的lua库路径
lua_package_path 'conf/lua/web/?.lua;;';
#定义日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'"$upstream_addr" "$upstream_status" "$upstream_response_time" '
'$request_time -- $http_cookie -- $cookie_pin';
access_log logs/access.log main;
#指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
#必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
tcp_nopush on;
#用户和服务器建立连接后客户端分配keep-alive链接超时时间,服务器将在这个超时时间过后关闭链接。
#如果设置为0表示关闭会话保持功能
keepalive_timeout 0;
#开启gzip压缩输出
gzip on;
#最小压缩文件大小
gzip_min_length 1k;
#压缩缓冲区
gzip_buffers 4 8k;
gzip_http_version 1.1;
#压缩类型
gzip_types text/plain application/x-javascript text/css text/shtml application/xml;
#是否在响应时启用chunked编码
chunked_transfer_encoding off;
charset utf-8;
proxy_intercept_errors on;
#隐藏页面中的nginx版本数字
server_tokens off;
#声明共享内存
lua_shared_dict my_shared_data 100m;
#引用的配置文件
include domains/gateway.conf;
server块
#监听端口
listen 10983;
#主机名
server_name localhost;
#上传文件最大限制
client_max_body_size 8m;
#开启代码缓存
lua_code_cache on;
location块
#设置DNS
resolver 10.209.11.13 10.209.10.13;
#internal指令指定某个location只能被“内部的”请求调用
internal;
proxy_pass $uri$is_args$args;
浙公网安备 33010602011771号