#nginx运行工作进程个数,一般设置cpu的核心或者核心数x2
worker_processes 12;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
#nginx采用epoll事件模型,处理效率高
use epoll;
#单个worker进程允许客户端最大连接数(65535为端口数量,超出部分无法连接)
worker_connections 20480;
#告诉nginx收到一个新连接通知后接受尽可能多的连接,默认是on,设置为on后,多个worker按串行方式来处理连接,也就是一个连接只有一个worker被唤醒,其他的处
#于休眠状态,设置为off后,多个worker按并行方式来处理连接,也就是一个连接会唤醒所有的worker,直到连接分配完毕,没有取得连接的继续休眠。
#当你的服务器连接数不多时,开启这个参数会让负载有一定的降低,但是当服务器的吞吐量很大时,为了效率,可以关闭这个参数
multi_accept off;
}
http {
#并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的。
server_tokens off;
# 媒体类型,include 只是一个在当前文件中包含另一个文件内容的指令
include mime.types;
#默认媒体类型,如: application/octet-stream;
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 logs/access.log main;
#设置nginx是否存储访问日志。关闭这个选项可以让读取磁盘IO操作更快
access_log off;
#sendfile 可以让sendfile()发挥作用。sendfile()可以在磁盘和TCP socket之间互相拷贝数据(或任意两个文件描述符)。
#Pre-sendfile是传送数据之前在用户空间申请数据缓冲区。之后用read()将数据从文件拷贝到这个缓冲区,write()将缓冲区数据写入网络。
#sendfile()是立即将数据从磁盘读到OS缓存。因为这种拷贝是在内核完成的,sendfile()要比组合read()和write()以及打开关闭丢弃缓冲更加有效
sendfile on;
#必须在sendfile开启模式才有效,防止网路阻塞,积极的减少网络报文段的数量
#(将响应头和正文的开始部分一起发送,而不一个接一个的发送。)
tcp_nopush on;
#客户端连接保持会话超时时间,超过这个时间,服务器断开这个链接
keepalive_timeout 65;
#client_header_timeout 和client_body_timeout 设置请求头和请求体(各自)的超时时间。我们也可以把这个设置低些。
client_header_timeout 30;
client_body_timeout 30;
#指定客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,nginx就会关闭连接
send_timeout 5;
#告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间。
reset_timedout_connection on;
#设置nginx服务允许用户最大上传数据大小
client_max_body_size 20m;
#是告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量
gzip on;
#设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取,
#默认值是0,不管页面多大都进行压缩,建议设置成大于1000,如果小与1K可能会越压越大
gzip_min_length 1000;
#压缩比例,用来指定GZIP压缩比,1压缩比最小,处理速度最快,9压缩比最大,传输速度快,但是处理慢,也比较消耗CPU资源。
gzip_comp_level 5;
#expired - 启用压缩,如果header头中包含 "Expires" 头信息
#no-cache - 启用压缩,如果header头中包含 "Cache-Control:no-cache" 头信息
#no-store - 启用压缩,如果header头中包含 "Cache-Control:no-store" 头信息
#private - 启用压缩,如果header头中包含 "Cache-Control:private" 头信息
#auth - 启用压缩 , 如果header头中包含 "Authorization" 头信息
gzip_proxied expired no-cache no-store private auth;
#可以压缩的文件类型
gzip_types text/plain application/xml application/javascript text/css application/octet-stream;
#varyheader支持,改选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过nginx压缩的数据。
gzip_vary on;
#引入文件
include services/*.conf;
}