本文翻译自官网
absolute_redirect on | off
1 | 默认:on |
aio on | off | threads[=pool]
1 | 默认:off |
alias path
1 | context: location |
alias和root有什么区别?
1 | location /images/ { |
client_body_buffer_size
设置读取客户端请求正文的缓冲区大小。 如果请求主体大于缓冲区,则整个主体或仅其部分被写入临时文件。 默认情况下,缓冲区大小等于两个内存页。 x86和其他32位平台和x86-64为8k。 在其他64位平台上通常为16K。
1 | client_body_buffer_size 8k | 16k; |
client_header_buffer_size
设置header的缓冲区大小,默认1k字节够用了,如果有些cookie很长,可以设大些。
client_max_body_size
在headerContent-Length
中指定请求的body大小,超过1M会被返回413(Request Entity Too Large)
,设置为0禁用这个检查,因为有些浏览器无法显示这个错误。
connection_pool_size
每个连接的内存分配,对性能影响很小,应谨慎使用。默认32位是256字节,64位是512字节。
default_type
1 | 默认:default_type text/plain; |
error_page
1 | context: http,server,location |
http
运行于最外层的模块,里面指定server指令。
internal
内部请求重定向,有条件限制,比如,error_page
1 | error_page 404 /404.html; |
limit except
limit except methods(GET, HEAD, POST, PUT, DELETE, MKCOL, COPY, MOVE, OPTIONS, PROPFIND, PROPPATCH, LOCK, UNLOCK, or PATCH).
1 | #除了 GET(包括HEAD)方法,其他禁用 |
limit_rate
限制客户端每个链接的速率,默认为0,不限制。比如:
1 | server { |
limit_rate_after
初始化时限制速度,后面不管,如下,开始时加载快点,后面慢慢来:
1 | location /flv/ { |
lingering_close
控制nginx如何关闭链接:
- on: 默认,等待客户端发数据,但只是启发性建议发更多数据;
- always: 总是无条件的等待处理客户端数据;
- off: 从不等待并且立即关闭链接,这个行为打破了协议,正常不应该使用。
lingering_time
在lingering_close
的影响下处理(读取或忽视)数据的最长时间,默认30s.
lingering_timeout
在lingering_close
的影响下等待数据到来的最长时间,默认5s.
listen
1 | default: listen *.80 | *.8000 |
//TODO
location
1 | syntax: location [= | ~ | ~* | ^* ] uri {...} |
解释:
~*
: 大小写不敏感~
: 大小写敏感^~
: 如果最长前缀有这个,则不检查正则;=
: 精确匹配,如果不匹配,则停止搜索;
匹配路径规则
先检查前缀匹配,且记住最长前缀,然后检查正则匹配,正则按声明的先后顺序检查,只要找到第一个匹配的就停止,然后使用正则,如果没有找到正则匹配,则使用前面的最长前缀,否则就只有404了。
例子
1 | location = / { |
/
==> A
/index.html
==> B
/doc/doc.html
==> C
/img/1.gif
==> D
/doc/1.jpg
==> E
末尾加斜杠
??//TODO
merge_slashes
是否合并斜杠,默认on
:
context: http,server
1 | location /scripts/ { |
open_file_cache
1 | open_file_cache off; |
root
1 | root path; |
如果一个URI必须被改变,则应该用alias命令。
server
一个虚拟服务器的配置模块,listen
指令描述监听的地址或端口并接收链接,server_name
指令列出所有的服务器名称。
详细见nginx如何处理一个请求.
server_name
设置一个server的名称,可以有多个,因为匹配的站点可以有多个,但listen
只有一个。
1 | server { |
*
通配符可以用在开头或结尾表示省略的名字:
1 | server { |
同样可以用正则:
1 | server { |
server_name的匹配顺序
- 明确的名称
- 最长的通配符名开头的名字
- 最长的通配符名结尾的名字
- 按定义的顺序出现的第一个正则匹配的名字