配置文件分两部分:
main主配置段
http基本配置段
语法格式,配置指令要以分号结尾:
directive value1 [value2..];
支持使用变量:
模块内置变量
自定义变量
set var_name value
主配置段的指令的类别:
用于调试,定位问题
正常运行必备的配置
优化性能的配置
事件相关的配置
用于调试,定位问题的指令:
1,daemon [off|on]
是否以守护进程方式启动nginx,默认为on
2,master_process on |off
是否以master/worker模型来运行nginx
3,error_log /path/to/error_log level
错误日志文件及其级别;处于调试的目的,可以使用debug级别,但此级别只有在编译nginx时使用了--with-debug选项才有效
正常运行的必备配置:
1,user USERNAME[GROUPNAME];
指定运行worker进程的用户和组,例如:
user nginx nginx;
2.指定nginx的pid文件
pid /path/to/pid_file
3.worker_rlimit_nofile #;
指定一个worker进程所能打开的最大文件句柄数;
4.worker_rlimit_sigpending #
指定每个用户能够发往worker的信号的数量
优化性能的相关配置:
1,worker_processes 3;
worker线程的个数,通常应该为物理CPU核心个数减1
cat /proc/cpuinfo查看CPU的核心
2.worker_cpu_affinity cpumask ...;
绑定worker进程至指定的CPU上
CPUMASK
0001第一颗cpu
0010
0100
1000
例如:worker_cpu_affinity 00000001 00000010 00000100
3,time_resolution t;
时间解析度
gettimeofday();
4,worker_priority nice; 调整nice值(-20,19),nice越大,cpu优先级越高
事件相关的配置:
1,accept_mutex[on|off]
内部调用用户请求至各worker时用的负载均衡锁;打开时表示能让多个worker轮流地,序列化的与响应新请求
2,lock_file /path/to/lock_file;
3,accept_mutex_delay #ms;
4,use[epoll |rgsig|select|poll]
定义使用的事件模型;建议让Nginx自动选择
5,worker_connection #;
每个worker进程所能够响应的最大并发请求数
网络连接相关的配置:
1.keepalive_timeout time;
保持连接的超市时长,默认为75s
2.keepalive_requests #;
在一次保持连接上允许承载最大资源请求数
3.keepalive_disable [msie6|safari|none]
为指定类型的浏览器禁用长连接;
4.tcp_nodelay on|off
对长连接是否使用TCP_NODELAY选项;
5.client_header_timeout time;
读取http请求报文首部的超时时长
6.client_body_timeout time
读取http请求body部分的超时时长
7.send_timeout time;
发送响应报文的超市时长
对客户端的请求进行限制:
1.limit_except METHOD{...}
指定对范围之外的其它方法的访问控制;
limit_except GET{
allow 172.16.0.0/16;
deny all
}
2.client_body_max_size SIZE;
限制请求报文中body部分上限;通过检测请求报文首部中的"Content_Length"来判定
3.limit_rate speed;
限制客户端每秒钟传输的字节数,默认为0,表示无限制
对内存或磁盘资源进行分配
1.client_body_in_file_only on|clean|off;
请求报文的body部分是否可暂存到磁盘中,on表示允许,请求结束也不会删除暂存内容,clean用完会清除磁盘,off不允许暂存;
2.client_body_in_single_buffer on|off
请求报文的body部分是否可暂存到内存的buffer中,放到里面会提高性能
3,client_body_buffer_size size;
4.client_body_temp_path DIR [level1[level2[level3[level4]]]]
例如:client_body_temp_path /var/tmp/nginx/client 1 2
5.client_header_buffer_size size;
MIME类型相关的配置:
1,types{}
定义MIME types至文件的扩展名;
type{
text/html .html;
p_w_picpath/jpeg .jpg;
}
2.default_type MIME-TYPE;
文件操作优化相关的配置:
1.sendfile on|off;
2.aio on|off;
3.directio size|off;
是否使用O_DIRECT选项去请求读取文件;与sendfile互斥
4.open_file_cache max=N[inactive=time] | off;
nginx可以缓存以下三种信息:
(1)文件句柄,文件大小和最近一次修改时间;
(2)打开目录的目录结构
(3)没有找到的或者没有权限操作的文件的相关信息
max=N表示可以缓存的最大条目上限;一旦到达上限,则会使用LRU从缓存中删除最近最少使用的条目; inactive=time;在inactive指定的时长内没有被访问过的缓存条目就会淘汰,默认关闭
5.open_file_cache_errors on|off;
是否缓存在文件缓冲中缓存打开文件时出现找不到路径,没有权限等的错误信息;
6.open_file_cache_min_uses time;
每隔多久检查一次缓存中缓存条目的有效性;默认60s