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;

 

posted @ 2017-07-06 15:10  onlyzzw  阅读(86)  评论(0)    收藏  举报