Nginx核心配置-可优化配置参数
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.nginx的官网查看指令帮助信息方法
1>.打开nginx的官网(https://nginx.org/),如下图所示,点击"documentation"
2>.下拉菜单,如下图所示,选择"Alphabetical index of directives"
3>.搜索你要查询的指令
4>.查看你搜索指令的帮助信息,如下图所示,官方还提供了使用案例
二.可优化配置参数
1>.keepalive_disable
对哪种浏览器禁用长连接,参考连接:https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_disable
2>.limit_except
限制客户端使用除了指定的请求方法之外的其它方法,参考连接:https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_except
3>.aio
是否启用asynchronous file I/O(AIO)功能,需要编译开启
linux 2.6以上内核提供以下几个系统调用来支持aio:
1、SYS_io_setup:建立aio 的context
2、SYS_io_submit: 提交I/O操作请求
3、SYS_io_getevents:获取已完成的I/O事件
4、SYS_io_cancel:取消I/O操作请求
5、SYS_io_destroy:毁销aio的context
参考连接:https://nginx.org/en/docs/http/ngx_http_core_module.html#aio
4>.directio
操作完全和aio相反,aio是读取文件而directio是写文件到磁盘,启用直接I/O,默认为关闭,当文件大于等于给定大小时,例如directio 4m,同步(直接)写磁盘,而非写缓存。
参考链接:https://nginx.org/en/docs/http/ngx_http_core_module.html#directio
5>.open_file_cache
open_file_cache off; #是否缓存打开过的文件信息
open_file_cache max=N [inactive=time];
nginx可以缓存以下三种信息:
(1) 文件元数据:文件的描述符、文件大小和最近一次的修改时间
(2) 打开的目录结构
(3) 没有找到的或者没有权限访问的文件的相关信息
max=N:可缓存的缓存项上限数量;达到上限后会使用LRU(Least recently used,最近最少使用)算法实现管理
inactive=time:缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于open_file_cache_min_uses指令所指定的次数的缓存项即为非活动项,将被删除
参考链接:https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache
6>.open_file_cache_errors
open_file_cache_errors on | off;
是否缓存查找时发生错误的文件一类的信息
默认值为off
参考链接:https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_errors
7>.open_file_cache_min_uses
open_file_cache_min_uses number;
open_file_cache指令的inactive参数指定的时长内,至少被命中此处指定的次数方可被归类为活动项
默认值为1
参考链接:https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_min_uses
8>.open_file_cache_valid
缓存项有效性的检查验证频率,默认值为60s
参考链接:https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_valid
三.nginx的主配置文件示例
[root@node101.yinzhengjie.org.cn ~]# vim /yinzhengjie/softwares/nginx/conf/nginx.conf
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /yinzhengjie/softwares/nginx/conf/nginx.conf
worker_processes 4;
worker_cpu_affinity 00000001 00000010 00000100 00001000;
events {
worker_connections 100000;
use epoll;
accept_mutex on;
multi_accept on;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
gzip on;
charset utf-8;
#最大缓存10000个文件,非活动数据超时时长60s
open_file_cache max=10000 inactive=60s;
#每间隔60s检查一下缓存数据有效性
open_file_cache_valid 60s;
#60秒内至少被命中访问5次才被标记为活动数据
open_file_cache_min_uses 5;
#缓存错误信息
open_file_cache_errors on;
#隐藏Nginx server版本。
server_tokens off;
#当文件大于等于给定大小时,同步(直接)写磁盘,而非写缓存。
directio 4m;
#上传文件相关参数
client_max_body_size 10m;
client_body_buffer_size 16k;
client_body_temp_path /yinzhengjie/data/web/nginx/temp 1 2 2;
#IE系列的浏览器禁用长连接,默认就是禁用了IE的长连接功能.
keepalive_disable msie6;
#开启长连接后,返回客户端的会话保持时间为60s,单次长连接累计请求达到指定次数请求或65秒就会被断开,后面的60为发送给客户端应答报文头部中显示的超时时间设置为60s:如不设置
客户端将不显示超时时间。 keepalive_timeout 65 60;
#在一次长连接上所允许请求的资源的最大数量
keepalive_requests 3;
#导入其他路径的配置文件
include /yinzhengjie/softwares/nginx/conf.d/*.conf;
}
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# nginx -t
nginx: the configuration file /yinzhengjie/softwares/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /yinzhengjie/soft