每一个worker进程所可以响应的最大并发请求数量;html
nginx最大并发响应数=worker_proceses * worker_connectionsnode
注意,nginx的worker_connections也受到worker_rlimit_nofile number的影响;linux
method: [epoll|rgsig|select|poll];nginx
定义使用的事件模型;linux只能使用epoll;web
默认on,各worker接收用户的请求的负载均衡锁;启用时,表示用于让多个worker轮流地、序列化地响应新请求;正则表达式
用来定义和配置一个虚拟主机算法
eg:server {浏览器
listen PORT缓存
server_name HOSTNAME1 HOSTNAME2 ...;服务器
root /PATH/;
}
该指令用来指定在server{...}中接收请求的IP和port。
a) 三种格式:
listen address[:port] [default_server] [ssl] [http2 | spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
listen port [default_server] [ssl] [http2 | spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
listen unix:path [default_server] [ssl] [http2 | spdy] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
b) 参数介绍
default_server:默认虚拟主机。使用场景,在用户请求的主机不能匹配服务器上的全部虚拟主机时,使用default_server提供服务。
ssl:设置使用ssl链接提供服务
backlog:后援队列的长度,通常来讲每个应用程序,在此应用对应的内核缓冲中都有对应的缓冲接收,列入一个服务最大并发响应为100,单同时有200个并发此时使用到后援队列。
unix:path:使用unix套接字文件通讯。使用场景本机应用访问本地的nginx服务时。
rcvbuf:接受缓冲区大小
sndbuf:发送缓冲区大小
a) 指明当前server的主机名。主机名支持通配符*,以及正则表达式~。
b) 主机名匹配策略
首先作精确匹配;例如:www.magedu.com
左侧通配符;例如:*.magedu.com
右侧通配符,例如:www.magedu.*
正则表达式,例如:~^.*\.magedu\.com$
default_server
默认值:on
对keepalived模式下的链接是否启用TCP_NODELAY选项。基于TCP的链接每次都须要三次握手四次断开的过程,在通讯时发送很小的数据包也须要这个过程,这样开销很大,浪费带宽。因此TCP有针对于此的优化,在客户端请求很小的资源时,会有必定延迟,多积累几个请求,一并处理。这会致使在客户端只访问一个小的资源时,会迟迟得不到响应。对于WEB服务器这种影响很致命,因此应该启用tcp_nodelay。
默认为 off,一般须要启动起来。
在内核中直接封装响应报文,发送给资源请求客户端。
设置WEB资源路径映射;用于指名用户请求的uri对应本地文件系统上的文档所在的目录路径。
location @name { ... }
a) 功能:容许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应的location块中的配置所处理;简言之,即用于为须要用到专用配置的uri提供特定配置;
b) 匹配规则
=:URI的精确匹配;一字不差。
^~:URI的左半部分匹配,不区分字符大小写;
~:作正则表达式匹配,区分字符大小写;
~*:作正则表达式匹配,不区分字符大小写;
c) 匹配优先级:精确匹配=、^~、~或~*、不带符号的URL;
d) 使用场景eg:对于用户请求的某一 特定类型的资源,如.txt作压缩处理。
location ~*\.txt${
gzip on;
}
a) 定义路径别名,文档映射的一种机制;只适用于location上下文
b) 辨析root和alias的不一样,咱们来举例说明。
a.1 访问http://www.A.com/sa/1.jpg
location /sa/ {
alias /web/user/sa/;
}
对应的是/web/user/sa/1.jps。alias其实就是把咱们访问的uri,替换为alias指定的uri
a.2 location /sa/ {
root /web/user/sa/;
}
对应的是/web/user/sa/sa/1.jps。root指令指定的是根。
定义默认站点主页面。
根据http的状态码重定向错误页面;
error_page 404 /404.html
error_page 404 =200 /404.html (以指定的响应状态码进行响应)
eg:
location /test {
try_files test1.html test2.html test3.html http://156.0.235.24/index.html
}
尝试查找第1至第N-1个文件,第一个即为返回给请求者的资源;若1至N-1文件都不存在,则跳转至最一个uri(必须不能匹配至当前location,而应该匹配至其它location,不然会致使死循环);
设定keepalive链接的超时时长;0表示禁止长链接;默认为75s;
在keepalived链接上所容许请求的最大资源数量;默认为100;
指明禁止为什么种浏览器使用keepalive功能;
注意这个指令并非进制keepalived功能,而是有些浏览器对此功能支持很差,此指令是为了指名对何种浏览器禁用keepalived功能。
发送响应报文的超时时长,默认为60s; 两次写操做的间隔时长
接收客户请求报文body的缓冲区大小;默认为16k;超出此指定大小时,其将被移存于client_body_temp_path指令指定的磁盘上;
设定用于存储客户端请求body的临时存储路径及子目录结构和数量;
client_body_temp_path /var/tmp/client_body 2 1;
2表明使用2个16进制字符来建立一级子目录,共有2^8(256)个。
1表明使用1个16进制字符来在每个一级子目录下建立2^4(16)个二级级子目录,最多有三级.
限制客户端的请求方法,对指定范围以外的其它的方法进行访问控制;
limit_except GET {
allow 172.16.0.0/16;
deny all;
}
示例:curl -X PUT http://1.1.1.1/download/index.html ,put为GET以外的方法,因此会拒绝访问
a) 限制客户端每秒钟所可以传输的字节数,默认speed为0表示无限制;
b) eg:
location /download/{
limit_rate 20;
root /web/;
}
c) 验证:weget http://ip:piort/download/1.txt。
是否启用异步IO功能,默认关闭。
直接IO是指,直接将数据写入磁盘,而不是先缓存到内存中
open_file_cache max=N [inactive=time];
打开文件相关信息的缓存
nginx能够缓存如下三种信息:
(1) 文件描述符、文件大小和最近一次的修改时间;
(2) 打开的目录的结构;
(3) 没有找到的或者没有权限操做的文件的相关信息;
max=N表示可缓存的最大条目上限;一旦达到上限,则会使用LRU算法从缓
存中删除最近最少使用的缓存项;
inactive=time:在此处指定的时长内没有被访问过的缓存项是为非活动缓存项,非活动缓存是无效的,所以直接删除;
该配置项决定open_file_cache 是否缓存找不到其路径的文件,或没有权限没有权限访问的文件相关信息;
每隔多久检查一次缓存中缓存项的有效性;默认为60s;
定义在 open_file_cache max=N [inactive=time]; 中inactive定义的时间内,最少被访问次数,若是访问次数少于number,则被视为非活动项,其不会被缓存