相信大家对nginx都很熟悉,但是如何优化nginx却又是在网上各种找资料,但是找到的资料都是各种抄袭;今天我就用我实战出来的成果展示给大家,下面是nginx.conf优化配置,nginx版本:1.13 ;
user nginx;
# 4核
worker_processes 4;
# 使得每一个worker进程可以独享一个核,提供cpu亲核性,避免多进程争抢。提升CPU的缓存命中率
worker_cpu_affinity 0001 0010 0100 1000;
# 文件最大打开数量为65535
worker_rlimit_nofile 65535;
events {
# 采用epoll事件模型,处理效率高
use epoll;
# 告诉nginx收到一个新连接通知后接受尽可能多的连接,默认是on,设置为on后,多个worker按串行方式来处理连接,也就是一个连接只有一个worker被唤醒,其他的处于休眠状态,设置为off后,多个worker按并行方式来处理连接,也就是一个连接会唤醒所有的worker,直到连接分配完毕,没有取得连接的继续休眠。当你的服务器连接数不多时,开启这个参数会让负载有一定的降低,但是当服务器的吞吐量很大时,为了效率,可以关闭这个参数。
multi_accept off;
# 单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存来制定,实际最大值就是worker进程数乘以work_connections
worker_connections 65535;
}
http {
# 媒体类型,include 只是一个在当前文件中包含另一个文件内容的指令。
include /etc/nginx/mime.types;
# 默认媒体类型足够
default_type application/octet-stream;
# 开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
sendfile on;
# 必须在sendfile开启模式才有效,防止网路阻塞,积极的减少网络报文段的数量(将响应头和正文的开始部分一起发送,而不一个接一个的发送
tcp_nopush on;
# 也是防止网络阻塞,不过要包涵在keepalived参数才有效
tcp_nodelay on;
# 客户端连接保持会话超时时间,超过这个时间,服务器断开这个链接
keepalive_timeout 0;
# 客户端请求头部的缓冲区大小
client_header_buffer_size 4k;
# 打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive 是指经过多长时间文件没被请求后删除缓存
open_file_cache max=102400 inactive=20s;
# 多长时间检查一次缓存的有效信息
open_file_cache_valid 30s;
# 指令中的inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive 时间内一次没被使用,它将被移除。
open_file_cache_min_uses 1;
# 设置请求头的超时时间
client_header_timeout 15;
# 设置请求体的超时时间。我们也可以把这个设置低些
client_body_timeout 15;
# 告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间
reset_timedout_connection on;
# 响应客户端超时时间,这个超时时间仅限于两个活动之间的时间,如果超过这个时间,客户端没有任何活动,nginx关闭连接
send_timeout 15;
# 并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的
server_tokens off;
# 上传文件大小限制。
client_max_body_size 10m;
# 开启gzip
gzip on;
# 设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取,默认值是0,不管页面多大都进行压缩,建议设置成大于1K,如果小与1K可能会越压越大
gzip_min_length 1028;
# gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间,后面会有详细说明
gzip_comp_level 7;
# 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
gzip_types text/plain application/javascript application/x-javascript text/css application/json application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml;
# varyheader支持,改选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过nginx压缩的数据
gzip_vary on;
# 禁用IE 6 gzip
gzip_disable "MSIE [1-6]\.";
# 压缩缓冲区大小,表示申请4个单位为32K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
gzip_buffers 4 32k;
# 压缩版本,用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。
gzip_http_version 1.1;
# nginx作为反向代理的时候启用,any - 无条件启用压缩
gzip_proxied any;
}
网友评论