read_ahead
语法:read_ahead size
默认:read_ahead 0
上下文:http, server, location
设置内核预读取文件的数量。
在linux系统上,使用posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL)系统调用,所以size参数被忽略。
在FreeBSD系统上,使用fcntl(O_READAHEAD, size)系统调用,从FreeBSD9.0开始可用,FreeBSD 7需要安装补丁。
recursive_error_pages
语法:recursive_error_pages on | off
默认:recursive_error_pages off
上下文:http, server, location
启用或禁用使用error_page指令产生的重定向,重定向的次数会有限制。
request_pool_size
语法:request_pool_size size
默认:request_pool_size 4k
上下文: http, server
精确调整每个请求的内存配额,这个指令对性能影响极小,一般不使用。
reset_timedout_connection
语法:reset_timedout_connection on | off
默认:reset_timedout_connection off
上下文:http, server, location
启用或禁用重置超时连接,重置表现如下。在关闭一个SOCKET前,SO_LINGER选项被设置成超时时间0。当SOCKET已经关闭时,RST标识会发送到客户端,该SOCKET的所有相关内存被释放。这有助于避免一个已经关闭了的SOCKET在FIN_WAIT1状态保持很长时间。
注意,超时的keep-alive连接会正常关闭。
resolver
语法:resolver address… [valid=time] [ipv6=on|off]
默认:—
上下文: http, server, location
配置了上游服务器的域名解析服务器,例如:
resolver 127.0.0.1 [::1]:5353;
address可以定义成域名或IP地址,和可选的端口号(1.3.1, 1.2.2)。
如果端口号没有定义,使用默认的53端口。域名服务器会采用轮询机制。
在1.1.7之前,只能配置一个服务器,服务器名称从1.3.1和1.2.2版本开始支持IPv6。
默认情况下,nginx在解析名称时会同时查找IPv4和IPv6,如果不需要IPv6,可以使用ipv6=off关闭。
解析IPv6的地址从1.5.8版本起开始支持。
默认情况下,nginx使用TTL对结果进行缓存,可以通过可选参数valid改变它:
resolver 127.0.0.1 [::1]:5353 valid=30s;
在1.1.9之前,不能改变缓存时间,nginx总是会缓存5分钟。
resolver_timeout
语法:resolver_timeout time
默认:resolver_timeout 30s
上下文:http, server, location
设置解析的超时时间,例如:
resolver_timeout 5s;
root
语法:root path
默认:root html
上下文:http, server, location, if in location
设置请求的根目录,例如下面的配置:
location /i/ { root /data/w3; }
/data/w3/i/top.gif文件会作为“/i/top.gif”请求的响应发送出去。
path的值可以包含变量,除了$document_root 和 $realpath_root
文件路径只是简单的将URI跟在root指令设置的根目录之后,如果URI需要改变,需要使用alias指令。
satisfy
语法:satisfy all | any
默认:satisfy all
上下文:http, server, location
设置由ngx_http_access_module、ngx_http_auth_basic_module及ngx_http_auth_request_module指令制定的访问规则需要全部匹配(all)还是只要匹配一个(any)即可。
例子:
location / { satisfy any; allow 192.168.1.0/32; deny all; auth_basic "closed site"; auth_basic_user_file conf/htpasswd; }
send_lowat
语法:send_lowat size
默认:send_lowat 0
上下文:http, server, location
如果设置非零的值,nginx会尝试通过kqueue方法的NOTE_LOWAT标识或SO_SNDLOWAT socket选项的方式将发送到客户端的socket数降到最低。这两种情况都要用到定义的size。
该指令在Linux, Solaris, 和 Windows系统上会被忽略。
send_timeout
语法:send_timeout time
默认:send_timeout 60s
上下文: http, server, location
设置客户端传输超时时间。超时时间只作用于两次成功的写请求之间,并非是整个的响应之间的传输时间。如果客户端在超时时间已到还没有收到任何数据,就会关闭连接。
sendfile
语法:sendfile on | off
默认:sendfile off
上下文: http, server, location, if in location
开启或禁用sendfile函数的使用。
从0.8.12版本开始在FreeBSD 5.2.1,aio通过sendfile函数预加载数据:
location /video/ { sendfile on; tcp_nopush on; aio on; }
在这个配置中,sendfile函数如果带着SF_NODISKIO标识会引起磁盘I/O不会阻塞,数据不在内存里,nginx会初始化异步读取一个字节的数据。首次读取时FreeBSD会读取128K字节的数据到内存中,再次读取时会读取16K字节的块。可以在read_ahead指令中改变。
1.7.11版本之前,预加载可以通过aio sendfile开启。
sendfile_max_chunk
语法:sendfile_max_chunk size
默认:sendfile_max_chunk 0
上下文:http, server, location
当设置为一个非零的值,会限制调用一次sendfile函数能够传输的数据量。如果不限制,工作进程会被一个最快的连接完全抢占。
server
语法:server { … }
默认:—
上下文:http
设置一个虚拟主机。在基于IP和基于主机名的虚拟主机之间划分的界限并不明确。listen指令为服务器描述了所有应该接受请求的地址和端口,server_name指令列出了所有的服务器名称。
server_name
语法:server_name name …
默认:server_name “”
上下文:server
设置虚拟主机的名称,例如:
server { server_name example.com www.example.com; }
第一个名称是主要的名称。
服务器名称可以用星号“*”代替名称的一部分或几部分:
server { server_name example.com *.example.com www.example.*; }
这些名称叫做通配符名称。
前两个可以合并成一个:
server { server_name .example.com; }
可以在server_name中使用正则表达式,前面用“~”:
server { server_name www.example.com ~^www\d+\.example\.com$; }
正则表达式从0.7.40版本开始支持捕获,捕获可以在之后用在其他指令中。
server { server_name ~^(www\.)?(.+)$; location / { root /sites/$2; } } server { server_name _; location / { root /sites/default; } }
名称中的正则表达式捕获创建的变量(0.8.25版本起)可以在之后的其他指令中使用:
server { server_name ~^(www\.)?(?.+)$; location / { root /sites/$domain; } } server { server_name _; location / { root /sites/default; } }
如果指令的参数设置成“$hostname”(0.9.4),机器的名称会被使用。
也可以定义空的名称(0.7.11):
server { server_name www.example.com ""; }
它允许服务器处理请求头不带Host域的请求。
0.8.48之前,默认使用机器的hostname。
在通过名称查找虚拟主机的过程中,如果名称匹配了超过一个变量(如通配符和正则都匹配了),会选择最先匹配的,使用下面的优先级:
- 具体名称
- 最长的以*开头的通配符,如“*.example.com”
- 最长的以*结尾的通配符,如“mail.*”
- 首先匹配的正则表达式(按在配置文件中出现的顺序)
server_name_in_redirect
语法:server_name_in_redirect on | off
默认:server_name_in_redirect off
上下文: http, server, location
开启或禁用在server_name指令中定义的主要服务器名称的重定向功能。当主要服务器名称禁用了,请求头域中的“Host”将被使用。如果当前没有这个域,会使用服务器的IP。
server_names_hash_bucket_size
语法:server_names_hash_bucket_size size
默认:server_names_hash_bucket_size 32|64|128
上下文: http
设置server_name一个bucket的哈希表的大小,默认值依赖于当前处理器的缓存行大小。
server_names_hash_max_size
语法:server_names_hash_max_size size
默认:server_names_hash_max_size 512
上下文:http
设置server_name哈希表最大的大小。
server_tokens
语法:server_tokens on | off | string
默认:server_tokens on
上下文: http, server, location
开启或关闭在nginx错误页和http响应头的Server域中的版本号。
从1.9.13开始这个值可以通过string变量进行定义,空字符串将禁用Server域的显示。