ngx_http_core_module 核心模块
指令
句法: | absolute_redirect on | off; |
---|---|
默认: |
absolute_redirect on;
|
语境: | http ,server ,location |
该指令出现在1.11.8版中。
如果禁用,nginx发出的重定向将是相对的。
另请参见server_name_in_redirect 和port_in_redirect指令。
句法: | aio on | off | threads[=pool]; |
---|---|
默认: |
aio off;
|
语境: | http ,server ,location |
该指令出现在0.8.11版本中。
启用或禁用在FreeBSD和Linux上使用异步文件I / O(AIO):
location / video / { aio on; output_buffers 1 64k; }
在FreeBSD上,可以从FreeBSD 4.3开始使用AIO。在FreeBSD 11.0之前,AIO可以静态链接到内核:
选项VFS_AIO
或作为内核可加载模块动态加载:
kldload aio
在Linux上,可以从内核版本2.6.22开始使用AIO。此外,有必要启用 directio,否则读取将被阻止:
location / video / { aio on; directio 512; output_buffers 1 128k; }
在Linux上, directio 只能用于读取在512字节边界(或XFS为4K)上对齐的块。在阻塞模式下读取文件的未对齐结束。对于字节范围请求和不是从文件开头的FLV请求也是如此:在文件开头和结尾读取未对齐数据将被阻塞。
当在Linux上启用AIO和sendfile时,AIO用于大于或等于directio指令中指定大小的文件,而sendfile用于较小大小的文件或禁用directio时。
location / video / { sendfile on; aio on; 方向8米; }
最后,可以 使用多线程(1.7.11)读取和发送文件,而不会阻止工作进程:
location / video / { sendfile on; aio线程; }
读取和发送文件操作将卸载到指定池的线程 。如果省略池名称,则使用名为“ default
” 的池。池名称也可以使用变量设置:
aio threads = pool $ disk;
默认情况下,禁用多线程,应使用--with-threads
配置参数启用它 。目前,多线程仅与epoll, kqueue和eventport方法兼容 。只在Linux上支持多线程文件发送。
另请参见sendfile指令。
句法: | aio_write on | off; |
---|---|
默认: |
aio_write off;
|
语境: | http ,server ,location |
该指令出现在1.9.13版本中。
如果启用了aio,则指定是否用于写入文件。目前,这仅在使用时有效aio threads
,并且仅限于使用 从代理服务器接收的数据编写临时文件。
句法: | alias path; |
---|---|
默认: | - |
语境: | location |
定义指定位置的替换。例如,使用以下配置
location / i / { alias / data / w3 / images /; }
根据“ /i/top.gif
”的要求,文件 /data/w3/images/top.gif
将被发送。
该path
值可以包含变量,除$document_root
和$realpath_root
。
如果alias
在使用正则表达式定义的位置内使用,则此类正则表达式应包含捕获并alias
应引用这些捕获(0.7.40),例如:
location~ ^ / users /(。+ \。(?:gif | jpe?g | png))$ { alias / data / w3 / images / $ 1; }
当location匹配指令值的最后一部分时:
location / images / { alias / data / w3 / images /; }
最好使用 root 指令:
location / images / { root / data / w3; }
句法: | chunked_transfer_encoding on | off; |
---|---|
默认: |
chunked_transfer_encoding on;
|
语境: | http ,server ,location |
允许在HTTP / 1.1中禁用分块传输编码。尽管符合标准要求,但在使用无法支持分块编码的软件时,它可能会派上用场。
句法: | client_body_buffer_size size; |
---|---|
默认: |
client_body_buffer_size 8k | 16k;
|
语境: | http ,server ,location |
设置读取客户端请求主体的缓冲区大小。如果请求主体大于缓冲区,则整个主体或仅其部分被写入 临时文件。默认情况下,缓冲区大小等于两个内存页。这在x86,其他32位平台和x86-64上是8K。在其他64位平台上通常为16K。
句法: | client_body_in_file_only on | clean | off; |
---|---|
默认: |
client_body_in_file_only off;
|
语境: | http ,server ,location |
确定nginx是否应将整个客户端请求主体保存到文件中。该指令可以在调试期间使用,也可以在使用$request_body_file
变量或 模块ngx_http_perl_module的 $ r-> request_body_file方法 时使用 。
设置为该值时on
,请求处理后不会删除临时文件。
该值clean
将导致删除请求处理后留下的临时文件。
句法: | client_body_in_single_buffer on | off; |
---|---|
默认: |
client_body_in_single_buffer off;
|
语境: | http ,server ,location |
确定nginx是否应将整个客户端请求主体保存在单个缓冲区中。使用$request_body
变量时,建议使用该指令 ,以保存所涉及的复制操作数。
句法: | client_body_temp_path path [level1 [level2 [level3]]]; |
---|---|
默认: |
client_body_temp_path client_body_temp;
|
语境: | http ,server ,location |
定义用于存储包含客户端请求主体的临时文件的目录。在指定的目录下最多可以使用三级子目录层次结构。例如,在以下配置中
client_body_temp_path / spool / nginx / client_temp 1 2;
临时文件的路径可能如下所示:
/阀芯/ nginx的/ client_temp / 7/45/00000123457
句法: | client_body_timeout time; |
---|---|
默认: |
client_body_timeout 60s;
|
语境: | http ,server ,location |
定义读取客户端请求正文的超时。超时仅设置为两个连续读取操作之间的时间段,而不是整个请求主体的传输。如果客户端在此时间内未传输任何内容,请求将以408(请求超时)错误终止。
句法: | client_header_buffer_size size; |
---|---|
默认: |
client_header_buffer_size 1k;
|
语境: | http , server |
设置读取客户端请求标头的缓冲区大小。对于大多数请求,1K字节的缓冲区就足够了。但是,如果请求包含长cookie或来自WAP客户端,则可能不适合1K。如果请求行或请求头字段不适合此缓冲区,则会分配由large_client_header_buffers指令配置的较大缓冲区 。
句法: | client_header_timeout time; |
---|---|
默认: |
client_header_timeout 60s;
|
语境: | http , server |
定义读取客户端请求标头的超时。如果客户端在此时间内未传输整个标头,请求将以408(请求超时)错误终止。
句法: | client_max_body_size size; |
---|---|
默认: |
client_max_body_size 1m;
|
语境: | http ,server ,location |
设置客户端请求正文的最大允许大小,在“Content-Length”请求标头字段中指定。如果请求中的大小超过配置的值,则会将413(请求实体太大)错误返回给客户端。请注意,浏览器无法正确显示此错误。设置size
为0将禁用检查客户端请求正文大小。
句法: | connection_pool_size size; |
---|---|
默认: |
connection_pool_size 256 | 512;
|
语境: | http , server |
允许精确调整每连接内存分配。该指令对性能的影响最小,通常不应使用。默认情况下,大小在32位平台上等于256字节,在64位平台上等于512字节。
在1.9.8版之前,所有平台上的默认值都是256。
句法: | default_type mime-type; |
---|---|
默认: |
default_type text / plain;
|
语境: | http ,server ,location |
定义响应的默认MIME类型。可以使用types指令设置文件扩展名到MIME类型的映射。
句法: | directio size | off; |
---|---|
默认: |
方向;
|
语境: | http ,server ,location |
该指令出现在0.7.7版本中。
在读取大于或等于指定的文件时, 允许使用O_DIRECT
标志(FreeBSD,Linux),F_NOCACHE
标志(macOS)或directio()
函数(Solaris)size
。该指令自动禁用(0.7.15) 给定请求的sendfile使用 。它对于提供大型文件非常有用:
方向4m;
或者在Linux上使用aio时。
句法: | directio_alignment size; |
---|---|
默认: |
directio_alignment 512;
|
语境: | http ,server ,location |
该指令出现在0.8.11版本中。
设置directio的对齐方式 。在大多数情况下,512字节对齐就足够了。但是,在Linux下使用XFS时,需要将其增加到4K。
句法: | disable_symlinks off; disable_symlinks on | if_not_owner [from=part]; |
---|---|
默认: |
disable_symlinks off;
|
语境: | http ,server ,location |
该指令出现在1.1.15版中。
确定打开文件时应如何处理符号链接:
off
- 路径名中的符号链接是允许的,不会被选中。这是默认行为。
on
- 如果路径名的任何组件是符号链接,则拒绝访问文件。
if_not_owner
- 如果路径名的任何组件是符号链接,并且链接指向的链接和对象具有不同的所有者,则拒绝访问文件。
from
=part
- 检查符号链接(参数
on
和if_not_owner
)时,通常会检查路径名的所有组件。通过另外指定from
=part
参数,可以避免检查路径名的初始部分中的符号链接 。在这种情况下,仅从指定的初始部分后面的路径名组件中检查符号链接。如果该值不是检查的路径名的初始部分,则检查整个路径名,就好像根本没有指定此参数一样。如果值与整个文件名匹配,则不检查符号链接。参数值可以包含变量。
例:
disable_symlinks on from = $ document_root;
该指令仅适用于具有 openat()
和fstatat()
接口的系统。这些系统包括FreeBSD,Linux和Solaris的现代版本。
参数on
并if_not_owner
添加处理开销。
在不支持仅为搜索打开目录的系统上,要使用这些参数,工作进程必须具有所有正在检查的目录的读取权限。
该 ngx_http_autoindex_module, ngx_http_random_index_module和ngx_http_dav_module 模块目前忽略此指令。
句法: | error_page code ... [=[response]] uri; |
---|---|
默认: | - |
语境: | http ,server ,location ,if in location |
定义将为指定错误显示的URI。一个uri
值可以包含变量。
例:
error_page 404 /404.html; error_page 500 502 503 504 /50x.html;
这会导致内部重定向到指定uri
的客户端请求方法更改为“ GET
”(对于除“ GET
”和“ HEAD
” 之外的所有方法)。
此外,可以使用“ =
response
”语法将响应代码更改为另一个,例如:
error_page 404 = 200 /empty.gif;
如果代理服务器或FastCGI / uwsgi / SCGI / gRPC服务器处理错误响应,并且服务器可能返回不同的响应代码(例如,200,302,401或404),则可以使用代码进行响应收益:
error_page 404 = /404.php;
如果在内部重定向期间无需更改URI和方法,则可以将错误处理传递到命名位置:
location / { error_page 404 = @fallback; } 位置@fallback { proxy_pass HTTP://后端; }
如果
uri
处理导致错误,则将上次发生的错误的状态代码返回给客户端。
也可以使用URL重定向进行错误处理:
error_page 403 http://example.com/forbidden.html; error_page 404 = 301 http://example.com/notfound.html;
在这种情况下,默认情况下,响应代码302返回给客户端。它只能更改为重定向状态代码之一(301,302,303,307和308)。
在版本1.1.16和1.0.13之前,代码307不被视为重定向。
在版本1.13.0之前,代码308不被视为重定向。
当且仅当error_page
在当前级别上没有定义指令时,这些指令才从先前级别继承 。
句法: | etag on | off; |
---|---|
默认: |
etag on;
|
语境: | http ,server ,location |
该指令出现在1.3.3版本中。
启用或禁用自动生成静态资源的“ETag”响应头字段。
句法: | http { ... } |
---|---|
默认: | - |
语境: | main |
提供指定HTTP服务器指令的配置文件上下文。
句法: | if_modified_since off | exact | before; |
---|---|
默认: |
if_modified_since exact;
|
语境: | http ,server ,location |
该指令出现在0.7.24版本中。
指定如何将响应的修改时间与“If-Modified-Since”请求标头字段中的时间进行比较:
off
- 忽略“If-Modified-Since”请求头字段(0.7.34);
exact
- 完全符合;
before
- 响应的修改时间小于或等于“If-Modified-Since”请求头字段中的时间。
句法: | ignore_invalid_headers on | off; |
---|---|
默认: |
ignore_invalid_headers on;
|
语境: | http , server |
控制是否应忽略具有无效名称的标头字段。有效名称由英文字母,数字,连字符和可能的下划线组成(由underscores_in_headers 指令控制)。
如果在服务器级别指定了该指令,则仅在服务器是默认服务器时使用其值。指定的值也适用于侦听同一地址和端口的所有虚拟服务器。
句法: | internal; |
---|---|
默认: | - |
语境: | location |
指定给定位置只能用于内部请求。对于外部请求,返回客户端错误404(未找到)。内部请求如下:
- 由error_page, index, random_index和 try_files指令重定向的请求 ;
- 来自上游服务器的“X-Accel-Redirect”响应头字段重定向的请求;
- 由ngx_http_ssi_module 模块 的“
include virtual
”命令, ngx_http_addition_module 模块指令以及auth_request和 mirror指令形成的子请求; - 请求由重写指令更改 。
例:
error_page 404 /404.html; location = /404.html { internal; }
每个请求最多有10个内部重定向,以防止在错误配置中发生的请求处理周期。如果达到此限制,则返回错误500(内部服务器错误)。在这种情况下,可以在错误日志中看到“重写或内部重定向周期”消息。
句法: | keepalive_disable none | browser ...; |
---|---|
默认: |
keepalive_disable msie6;
|
语境: | http ,server ,location |
禁用与行为不当的浏览器保持连接状态。该browser
参数指定浏览器会受到影响。msie6
一旦收到POST请求,该值将禁用与旧版本MSIE的保持活动连接。该值safari
禁用与macOS和类似macOS的操作系统上的Safari和类似Safari的浏览器的保持活动连接。该值none
启用与所有浏览器的保持活动连接。
在版本1.1.18之前,该值
safari
与所有操作系统上的所有Safari和类似Safari的浏览器相匹配,默认情况下禁用与它们保持连接的连接。
句法: | keepalive_requests number; |
---|---|
默认: |
keepalive_requests 100;
|
语境: | http ,server ,location |
该指令出现在0.8.0版本中。
设置可通过一个保持活动连接提供的最大请求数。在发出最大请求数后,将关闭连接。
句法: | keepalive_timeout timeout [header_timeout]; |
---|---|
默认: |
keepalive_timeout 75s;
|
语境: | http ,server ,location |
第一个参数设置一个超时,在此期间保持活动的客户端连接将在服务器端保持打开状态。零值禁用保持活动的客户端连接。可选的第二个参数在“Keep-Alive:timeout = time
”响应头字段中设置一个值。两个参数可能不同。
time
Mozilla和Konqueror识别 “Keep-Alive:timeout = ”标题字段。MSIE在大约60秒内自行关闭保持连接。
句法: | large_client_header_buffers number size; |
---|---|
默认: |
large_client_header_buffers 4 8k;
|
语境: | http , server |
设置用于读取大客户机请求标头的最大值number
和size
缓冲区。请求行不能超过一个缓冲区的大小,否则会将414(Request-URI Too Large)错误返回给客户端。请求头字段也不能超过一个缓冲区的大小,或者400(错误请求)错误返回给客户端。缓冲区仅按需分配。默认情况下,缓冲区大小等于8K字节。如果在请求处理结束后连接转换为保持活动状态,则释放这些缓冲区。
句法: | limit_except method ... { ... } |
---|---|
默认: | - |
语境: | location |
限制允许位置内的HTTP方法。该method
参数可以是下列之一: GET
, HEAD
, POST
, PUT
, DELETE
, MKCOL
, COPY
,MOVE
, OPTIONS
, PROPFIND
, PROPPATCH
, LOCK
, UNLOCK
,或 PATCH
。允许该GET
方法HEAD
也允许该 方法。使用ngx_http_access_module, ngx_http_auth_basic_module和 ngx_http_auth_jwt_module (1.13.10)模块指令可以限制对其他方法的访问 :
limit_except GET { 允许192.168.1.0/32; 否认所有; }
请注意,这将限制对除 GET和HEAD 之外的所有方法的访问 。
句法: | limit_rate rate; |
---|---|
默认: |
limit_rate 0;
|
语境: | http ,server ,location ,if in location |
限制向客户端传输的响应速率。在rate
被以每秒字节数指定。零值禁用速率限制。根据请求设置限制,因此如果客户端同时打开两个连接,则总速率将是指定限制的两倍。
也可以在$limit_rate
变量中设置速率限制。在根据特定条件限制费率的情况下,它可能很有用:
server { if($ slow){ set $ limit_rate 4k; } ... }
还可以在代理服务器响应的“X-Accel-Limit-Rate”头字段中设置速率限制。可以使用proxy_ignore_headers, fastcgi_ignore_headers, uwsgi_ignore_headers和 scgi_ignore_headers 指令禁用此功能 。
句法: | limit_rate_after size; |
---|---|
默认: |
limit_rate_after 0;
|
语境: | http ,server ,location ,if in location |
该指令出现在0.8.0版本中。
设置初始量,在此之后,对客户端的响应的进一步传输将受到速率限制。
例:
location / flv / { flv; limit_rate_after 500k; limit_rate 50k; }
句法: | lingering_close off | on | always; |
---|---|
默认: |
挥之不去
|
语境: | http ,server ,location |
该指令出现在1.1.0和1.0.6版本中。
控制nginx如何关闭客户端连接。
默认值“ on
”指示nginx 在完全关闭连接之前等待并 处理来自客户端的其他数据,但仅当启发式表明客户端可能正在发送更多数据时。
值“ always
”将导致nginx无条件地等待并处理其他客户端数据。
值“ off
”告诉nginx永远不要等待更多数据并立即关闭连接。此行为会破坏协议,不应在正常情况下使用。
句法: | lingering_time time; |
---|---|
默认: |
徘徊时间30秒;
|
语境: | http ,server ,location |
当lingering_close生效时,此指令指定nginx处理(读取和忽略)来自客户端的其他数据的最长时间。之后,即使有更多数据,连接也将关闭。
句法: | lingering_timeout time; |
---|---|
默认: |
lingering_timeout 5s;
|
语境: | http ,server ,location |
当lingering_close生效时,此指令指定更多客户端数据到达的最长等待时间。如果在此期间未收到数据,则关闭连接。否则,读取并忽略数据,并且nginx开始再次等待更多数据。重复“wait-read-ignore”循环,但不会超过lingering_time指令指定的循环 。
句法: | 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]]; |
---|---|
默认: |
听*:80 | *:8000;
|
语境: | server |
设置address
和port
为IP或path
服务器将接受请求的UNIX域套接字。无论address
和port
,或只address
或仅port
可指定。一个address
也可以是主机名,例如:
听127.0.0.1:8000; 听127.0.0.1; 听8000; 听*:8000; listen localhost:8000;
IPv6地址(0.7.36)在方括号中指定:
听[::]:8000; 听[:: 1];
UNIX域套接字(0.8.21)使用“ unix:
”前缀指定:
听unix:/var/run/nginx.sock;
如果仅address
给出,则使用端口80。
如果指令不存在,那么*:80
如果nginx以超级用户权限运行,则使用其中一个,*:8000
否则使用。
该default_server
参数(如果存在)将使服务器成为指定的address
:port
对的默认服务器 。如果没有任何指令具有该default_server
参数,那么具有address
:port
pair 的第一个服务器 将成为该对的默认服务器。
在0.8.21之前的版本中,此参数的名称很简单
default
。
该ssl
参数(0.7.14)允许指定此端口上接受所有的连接应在SSL模式下工作。这样可以为处理HTTP和HTTPS请求的服务器提供更紧凑的配置。
的http2
参数(1.9.5)配置端口接受 HTTP / 2连接。通常,为了使其工作,也ssl
应该指定参数,但是也可以将nginx配置为接受没有SSL的HTTP / 2连接。
的spdy
参数(1.3.15-1.9.4)允许接受 SPDY这个端口上的连接。通常,为了使其工作,也ssl
应该指定参数,但是也可以将nginx配置为接受不带SSL的SPDY连接。
的proxy_protocol
参数(1.5.12)允许指定这个端口上接受的所有连接应使用 代理服务器协议。
自版本1.13.11起支持PROXY协议版本2。
该listen
指令可以有几个特定于与套接字相关的系统调用的附加参数。这些参数可以在任何指定 listen
的指令,但只有一次,对于一个给定 address
:port
对。
在0.8.21之前的版本中,它们只能在
listen
指令中与default
参数一起 指定。
setfib
=number
- 此参数(0.8.44)设置
SO_SETFIB
侦听套接字的关联路由表FIB(选项)。这目前仅适用于FreeBSD。 fastopen
=number
- 为侦听套接字 启用“ TCP Fast Open ”(1.5.8)并 限制 尚未完成三次握手的连接队列的最大长度。
backlog
=number
- 设置调用中的
backlog
参数,该参数listen()
限制挂起连接队列的最大长度。默认情况下,backlog
在FreeBSD,DragonFly BSD和macOS上设置为-1,在其他平台上设置为511。 rcvbuf
=size
- 设置
SO_RCVBUF
侦听套接字的接收缓冲区大小(选项)。 sndbuf
=size
- 设置
SO_SNDBUF
侦听套接字的发送缓冲区大小(选项)。 accept_filter
=filter
SO_ACCEPTFILTER
为侦听套接字 设置接受过滤器的名称(选项),该套接字在传入连接之前过滤传入连接accept()
。这仅适用于FreeBSD和NetBSD 5.0+。可能的值是 dataready 和 httpready。deferred
- 指示在Linux上使用延迟
accept()
(TCP_DEFER_ACCEPT
套接字选项)。 bind
- 指示进行单独
bind()
对于一个给定的呼叫address
:port
对。这很有用,因为如果有几个listen
指令具有相同的端口但地址不同,并且其中一个listen
指令侦听给定端口(*:
port
)的所有地址,则nginx将bind()
仅执行*:
port
。应该注意,getsockname()
在这种情况下将进行系统调用以确定接受连接的地址。如果setfib
,backlog
,rcvbuf
,sndbuf
,accept_filter
,deferred
,ipv6only
,或so_keepalive
参数用于随后对于给定的address
:port
配对单独的bind()
呼叫将总是进行。 ipv6only
=on
|off
- 此参数(0.7.42)确定(通过
IPV6_V6ONLY
套接字选项)侦听通配符地址的IPv6套接字是[::]
仅接受IPv6连接还是仅接受IPv6和IPv4连接。默认情况下,此参数处于启用状态。它只能在开始时设置一次。在1.3.4版之前,如果省略此参数,则操作系统的设置对套接字有效。
reuseport
- 此参数(1.9.1)指示为每个工作进程创建一个单独的侦听套接字(使用
SO_REUSEPORT
Linux 3.9+和DragonFly BSD上的 套接字选项,或SO_REUSEPORT_LB
在FreeBSD 12+上),允许内核在工作进程之间分配传入连接。目前仅适用于Linux 3.9 +,DragonFly BSD和FreeBSD 12+(1.15.1)。不恰当地使用此选项可能会产生安全 隐患。
so_keepalive
=on
|off
| [keepidle
]:[keepintvl
]:[keepcnt
]- 此参数(1.1.11)配置侦听套接字的“TCP keepalive”行为。如果省略此参数,则操作系统的设置将对套接字有效。如果设置为值“
on
”,SO_KEEPALIVE
则为套接字打开选项。如果将其设置为值“off
”,SO_KEEPALIVE
则为套接字关闭该 选项。在每个插槽的基础使用的TCP保活参数某些操作系统支持设置TCP_KEEPIDLE
,TCP_KEEPINTVL
和TCP_KEEPCNT
套接字选项。在这样的系统(目前,Linux的2.4 +,NetBSD的5+和FreeBSD 9.0-STABLE),它们可以使用配置的keepidle
,keepintvl
和keepcnt
参数。可以省略一个或两个参数,在这种情况下,相应套接字选项的系统默认设置将生效。例如,SO_KEEPALIVE =30米:: 10
将idle timeout(
TCP_KEEPIDLE
)设置为30分钟,将探测间隔(TCP_KEEPINTVL
)保留为系统默认值,并将探测计数(TCP_KEEPCNT
)设置为10个探测器。
例:
listen 127.0.0.1 default_server accept_filter = dataready backlog = 1024;
句法: | location [ = | ~ | ~* | ^~ ] uri { ... } location @name { ... } |
---|---|
默认: | - |
语境: | server , location |
根据请求URI设置配置。
在解码以“ %XX
”形式编码的文本,解析对相对路径分量“ .
”和“ ..
”的引用,以及将两个或更多个相邻斜杠可能 压缩成单个斜线之后,针对规范化的URI执行匹配。
位置可以由前缀字符串或正则表达式定义。使用前面的“ ~*
”修饰符(对于不区分大小写的匹配)或“ ~
”修饰符(对于区分大小写的匹配)指定正则表达式。为了找到与给定请求匹配的位置,nginx首先检查使用前缀字符串(前缀位置)定义的位置。其中,选择并记住具有最长匹配前缀的位置。然后按照它们在配置文件中的出现顺序检查正则表达式。正则表达式的搜索在第一次匹配时终止,并使用相应的配置。如果未找到与正则表达式的匹配,则使用先前记住的前缀位置的配置。
location
块可以嵌套,下面提到一些例外。
对于不区分大小写的操作系统(如macOS和Cygwin),与前缀字符串匹配会忽略大小写(0.7.7)。但是,比较仅限于单字节语言环境。
正则表达式可以包含稍后可以在其他指令中使用的捕获(0.7.40)。
如果最长匹配前缀位置具有“ ^~
”修饰符,则不检查正则表达式。
此外,使用“ =
”修饰符可以定义URI和位置的精确匹配。如果找到完全匹配,则搜索终止。例如,如果/
频繁发生“ ”请求,则定义“ location = /
”将加速这些请求的处理,因为搜索在第一次比较之后立即终止。这样的位置显然不能包含嵌套位置。
在0.7.1到0.8.41的版本中,如果请求与前缀位置匹配而没有“
=
”和“^~
”修饰符,则搜索也会终止,并且不会检查正则表达式。
让我们通过一个例子来说明以上内容:
location = / { [configuration A] } location / { [configuration B] } location / documents / { [configuration C] } location ^〜/ images / { [configuration D] } location~ * \。(gif | jpg | jpeg )$ { [配置E] }
“ /
”请求将匹配配置A,“ /index.html
”请求将匹配配置B,“ /documents/document.html
”请求将匹配配置C,“ /images/1.gif
”请求将匹配配置D,并且“ /documents/1.jpg
”请求将匹配配置E.
“ @
”前缀定义命名位置。这样的位置不用于常规请求处理,而是用于请求重定向。它们不能嵌套,也不能包含嵌套位置。
如果位置由以斜杠字符结尾的前缀字符串定义,并且请求由 proxy_pass, fastcgi_pass, uwsgi_pass,scgi_pass, memcached_pass或 grpc_pass之一处理,则执行特殊处理。为了响应URI等于此字符串的请求,但没有尾部斜杠,带有代码301的永久重定向将返回到请求的URI,并附加斜杠。如果不需要,可以像下面这样定义URI和位置的完全匹配:
location / user / { proxy_pass http://user.example.com; } location = / user { proxy_pass http://login.example.com; }
句法: | log_not_found on | off; |
---|---|
默认: |
log_not_found on;
|
语境: | http ,server ,location |
启用或禁用将未找到的文件的错误记录到 error_log中。
句法: | log_subrequest on | off; |
---|---|
默认: |
log_subrequest off;
|
语境: | http ,server ,location |
启用或禁用将子请求记录到 access_log中。
句法: | max_ranges number; |
---|---|
默认: | - |
语境: | http ,server ,location |
该指令出现在1.1.2版中。
限制字节范围请求中允许的最大范围数。处理超出限制的请求,就好像没有指定字节范围一样。默认情况下,范围数量不受限制。零值完全禁用字节范围支持。
句法: | merge_slashes on | off; |
---|---|
默认: |
merge_slashes on;
|
语境: | http , server |
启用或禁用将URI中的两个或多个相邻斜杠压缩为单个斜杠。
请注意,压缩对于正确匹配前缀字符串和正则表达式位置至关重要。没有它,“ //scripts/one.php
”请求将不匹配
location / scripts / { ... }
并且可能被处理为静态文件。所以它被转换为“ /scripts/one.php
”。
off
如果URI包含base64编码的名称, 则转换压缩可能是必要的,因为base64在/
内部使用“ ”字符。但是,出于安全考虑,最好避免关闭压缩。
如果在服务器级别指定了该指令,则仅在服务器是默认服务器时使用其值。指定的值也适用于侦听同一地址和端口的所有虚拟服务器。
句法: | msie_padding on | off; |
---|---|
默认: |
msie_padding on;
|
语境: | http ,server ,location |
启用或禁用向状态大于400的MSIE客户端的响应添加注释,以将响应大小增加到512字节。
句法: | msie_refresh on | off; |
---|---|
默认: |
msie_refresh off;
|
语境: | http ,server ,location |
启用或禁用发布刷新而不是MSIE客户端的重定向。
句法: | open_file_cache off; open_file_cache max=N [inactive=time]; |
---|---|
默认: |
open_file_cache off;
|
语境: | http ,server ,location |
配置可以存储的缓存:
- 打开文件描述符,它们的大小和修改时间;
- 关于目录存在的信息;
- 文件查找错误,例如“找不到文件”,“没有读取权限”等。
应该通过open_file_cache_errors 指令单独启用缓存错误 。
该指令具有以下参数:
max
- 设置缓存中的最大元素数; 在缓存溢出时,删除最近最少使用(LRU)的元素;
inactive
- 定义一个时间,如果在此期间未访问该元素,则从该缓存中删除该元素; 默认情况下,它是60秒;
off
- 禁用缓存。
例:
open_file_cache max = 1000 inactive = 20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on;
句法: | open_file_cache_errors on | off; |
---|---|
默认: |
open_file_cache_errors off;
|
语境: | http ,server ,location |
通过open_file_cache启用或禁用文件查找错误的缓存 。
句法: | open_file_cache_min_uses number; |
---|---|
默认: |
open_file_cache_min_uses 1;
|
语境: | http ,server ,location |
设置在open_file_cache指令参数number
配置的时间段内文件访问的最小值,这是文件描述符在缓存中保持打开所必需的。 inactive
句法: | open_file_cache_valid time; |
---|---|
默认: |
open_file_cache_valid 60s;
|
语境: | http ,server ,location |
设置 应验证open_file_cache元素的时间 。
句法: | output_buffers number size; |
---|---|
默认: |
output_buffers 2 32k;
|
语境: | http ,server ,location |
设置用于从磁盘读取响应的缓冲区number
和size
。
在1.9.5版之前,默认值为1 32k。
句法: | port_in_redirect on | off; |
---|---|
默认: |
port_in_redirect on;
|
语境: | http ,server ,location |
启用或禁用在nginx发出的绝对重定向中指定端口 。
在重定向中使用主服务器名称由server_name_in_redirect指令控制。
句法: | postpone_output size; |
---|---|
默认: |
postpone_output 1460;
|
语境: | http ,server ,location |
如果可能,客户端数据的传输将被推迟,直到nginx至少size
有要发送的数据字节为止。零值禁用推迟数据传输。
句法: | read_ahead size; |
---|---|
默认: |
read_ahead 0;
|
语境: | http ,server ,location |
设置使用文件时内核的预读取量。
在Linux上,使用 posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL)
系统调用,因此size
忽略该参数。
在FreeBSD上,使用了fcntl(O_READAHEAD,
size
)
自FreeBSD 9.0-CURRENT以来支持的 系统调用。FreeBSD 7必须 打补丁。
句法: | recursive_error_pages on | off; |
---|---|
默认: |
recursive_error_pages off;
|
语境: | http ,server ,location |
使用error_page 指令启用或禁用多个重定向 。此类重定向的数量有限。
句法: | request_pool_size size; |
---|---|
默认: |
request_pool_size 4k;
|
语境: | http , server |
允许精确调整每个请求的内存分配。该指令对性能的影响最小,通常不应使用。
句法: | reset_timedout_connection on | off; |
---|---|
默认: |
reset_timedout_connection off;
|
语境: | http ,server ,location |
启用或禁用重置超时连接。重置如下进行。在关闭套接字之前,SO_LINGER
在其上设置了一个超时值为0 的 选项。当套接字关闭时,TCP RST被发送到客户端,并释放该套接字占用的所有内存。这有助于避免将已填充缓冲区的已关闭套接字保持在FIN_WAIT1状态很长时间。
应该注意,超时保持连接正常关闭。
句法: | resolver address ... [valid=time] [ipv6=on|off]; |
---|---|
默认: | - |
语境: | http ,server ,location |
将用于解析上游服务器名称的名称服务器配置到地址中,例如:
resolver 127.0.0.1 [:: 1]:5353;
可以将地址指定为域名或IP地址,以及可选端口(1.3.1,1.2.2)。如果未指定端口,则使用端口53。以循环方式查询名称服务器。
在1.1.7版之前,只能配置一个名称服务器。从版本1.3.1和1.2.2开始支持使用IPv6地址指定名称服务器。
默认情况下,nginx将在解析时查找IPv4和IPv6地址。如果不需要查找IPv6地址,则ipv6=off
可以指定参数。
从版本1.5.8开始支持将名称解析为IPv6地址。
默认情况下,nginx使用响应的TTL值缓存答案。可选valid
参数允许覆盖它:
resolver 127.0.0.1 [:: 1]:5353有效= 30s;
在版本1.1.9之前,无法调整缓存时间,并且nginx始终缓存5分钟的答案。
为防止DNS欺骗,建议在正确安全的受信任本地网络中配置DNS服务器。
句法: | resolver_timeout time; |
---|---|
默认: |
resolver_timeout 30s;
|
语境: | http ,server ,location |
设置名称解析的超时,例如:
resolver_timeout 5s;
句法: | 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
。
仅通过向root
指令的值添加URI来构造文件的路径。如果必须修改URI, 则应使用别名指令。
句法: | satisfy all | any; |
---|---|
默认: |
满足所有;
|
语境: | http ,server ,location |
如果ngx_http_access_module, ngx_http_auth_basic_module, ngx_http_auth_request_module或ngx_http_auth_jwt_module 模块的all(all
)或至少一个(any
) 允许访问,则 允许访问。
例:
location / { 满足任何; 允许192.168.1.0/32; 否认所有; auth_basic“封闭的网站”; auth_basic_user_file conf / htpasswd; }
句法: | send_lowat size; |
---|---|
默认: |
send_lowat 0;
|
语境: | http ,server ,location |
如果指令设置为非零值,nginx将尝试通过使用kqueue方法的NOTE_LOWAT
标志 或套接字选项来最小化客户端套接字上的发送操作数 。在这两种情况下都使用指定的。 SO_SNDLOWAT
size
在Linux,Solaris和Windows上忽略此指令。
句法: | send_timeout time; |
---|---|
默认: |
send_timeout 60s;
|
语境: | http ,server ,location |
设置将响应传输到客户端的超时。仅在两个连续的写操作之间设置超时,而不是为整个响应的传输。如果客户端在此时间内未收到任何内容,则会关闭连接。
句法: | sendfile on | off; |
---|---|
默认: |
sendfile off;
|
语境: | http ,server ,location ,if in location |
启用或禁用使用 sendfile()
。
从nginx 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 size; |
---|---|
默认: |
sendfile_max_chunk 0;
|
语境: | http ,server ,location |
设置为非零值时,限制可在单个sendfile()
调用中传输的数据量。没有限制,一个快速连接可能完全占用工作进程。
句法: | server { ... } |
---|---|
默认: | - |
语境: | http |
设置虚拟服务器的配置。基于IP(基于IP地址)和基于名称(基于“主机”请求标头字段)的虚拟服务器之间没有明确的区别。相反,listen指令描述了应该接受服务器连接的所有地址和端口, server_name指令列出了所有服务器名称。“ 如何nginx处理请求 ”文档中提供了示例配置。
句法: | server_name 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 { server_name www.example.com~ ^ www \ d + \ .example \ .com $; }
正则表达式可以包含以后可以在其他指令中使用的捕获(0.7.40):
server { server_name〜^(www \。)?(。+)$; location / { root / sites / $ 2; } } 服务器{ 服务器名_; location / { root / sites / default; } }
正则表达式中的命名捕获创建变量(0.8.25),以后可以在其他指令中使用:
server { server_name~ ^(www \。)?(?<domain>。+)$; location / { root / sites / $ domain; } } 服务器{ 服务器名_; location / { root / sites / default; } }
如果指令的参数设置为“ $hostname
”(0.9.4),则插入机器的主机名。
也可以指定一个空的服务器名称(0.7.11):
server { server_name www.example.com“”; }
它允许此服务器处理请求而不使用“Host”头字段 - 而不是默认服务器 - 用于给定地址:端口对。这是默认设置。
在0.8.48之前,默认使用机器的主机名。
在按名称搜索虚拟服务器期间,如果名称与多个指定的变体匹配(例如,通配符名称和正则表达式匹配),将按以下优先级顺序选择第一个匹配的变体:
- 确切的名字
- 以星号开头的最长通配符名称,例如“
*.example.com
” - 最长的通配符名称以星号结尾,例如“
mail.*
” - 第一个匹配的正则表达式(按配置文件中的出现顺序)
服务器名称的详细描述在单独的 服务器名称文档中提供。
句法: | server_name_in_redirect on | off; |
---|---|
默认: |
server_name_in_redirect off;
|
语境: | http ,server ,location |
在nginx发出的绝对重定向中, 启用或禁用server_name指令指定的主服务器名称 。禁用主服务器名称时,将使用“主机”请求标头字段中的名称。如果此字段不存在,则使用服务器的IP地址。
在重定向中使用端口由port_in_redirect指令控制。
句法: | server_names_hash_bucket_size size; |
---|---|
默认: |
server_names_hash_bucket_size 32 | 64 | 128;
|
语境: | http |
设置服务器名称哈希表的存储桶大小。默认值取决于处理器缓存行的大小。设置哈希表的详细信息在单独的文档中提供 。
句法: | server_names_hash_max_size size; |
---|---|
默认: |
server_names_hash_max_size 512;
|
语境: | http |
设置size
服务器名称哈希表的最大值。设置哈希表的详细信息在单独的文档中提供 。
句法: | server_tokens on | off | build | string; |
---|---|
默认: |
server_tokens on;
|
语境: | http ,server ,location |
启用或禁用在错误页面和“服务器”响应头字段中发出nginx版本。
的build
参数(1.11.10)使发射构建名称 与版本nginx的沿。
此外,作为商业订阅的一部分 ,从版本1.9.13开始,错误页面上的签名和“服务器”响应头字段值可以使用string
with变量显式设置。空字符串禁用“服务器”字段的发射。
句法: | subrequest_output_buffer_size size; |
---|---|
默认: |
subrequest_output_buffer_size 4k | 8k;
|
语境: | http ,server ,location |
该指令出现在1.13.10版本中。
设置size
用于存储子请求的响应主体的缓冲区。默认情况下,缓冲区大小等于一个内存页面。这是4K或8K,具体取决于平台。然而,它可以做得更小。
该指令仅适用于将响应主体保存到内存中的子请求。例如,这些子请求由SSI创建 。
句法: | tcp_nodelay on | off; |
---|---|
默认: |
tcp_nodelay on;
|
语境: | http ,server ,location |
启用或禁用该TCP_NODELAY
选项的使用。当连接转换为保持活动状态时,将启用该选项。此外,它在SSL连接,无缓冲代理和WebSocket代理上启用。
句法: | tcp_nopush on | off; |
---|---|
默认: |
tcp_nopush关闭;
|
语境: | http ,server ,location |
启用或禁用TCP_NOPUSH
在FreeBSD上使用套接字选项或TCP_CORK
在Linux 上使用套接字选项。仅在使用sendfile时才启用这些选项。启用该选项允许
- 在Linux和FreeBSD 4上,在一个数据包中发送响应头和文件的开头。*;
- 以完整数据包发送文件。
句法: | try_files file ... uri; try_files file ... =code; |
---|---|
默认: | - |
语境: | server , location |
检查指定顺序的文件是否存在,并使用第一个找到的文件进行请求处理; 处理在当前上下文中执行。file
根据root和alias指令从参数 构造文件的路径 。可以通过在名称末尾指定斜杠来检查目录的存在,例如“ $uri/
”。如果未找到任何文件,则会进行内部重定向到 uri
最后一个参数中指定的内容。例如:
location / images / { try_files $ uri /images/default.gif; } location = /images/default.gif { expires 30s; }
最后一个参数也可以指向命名位置,如下面的示例所示。从版本0.7.51开始,最后一个参数也可以是 code
:
location / { try_files $ uri $ uri / index.html $ uri.html = 404; }
代理Mongrel的示例:
location / { try_files /system/maintenance.html $ uri $ uri / index.html $ uri.html @mongrel; } 位置@mongrel { proxy_pass HTTP://杂种; }
Drupal / FastCGI的示例:
location / { try_files $ uri $ uri / @drupal; } location~ \ .php $ { try_files $ uri @drupal; fastcgi_pass ...; fastcgi_param SCRIPT_FILENAME / path / to $ fastcgi_script_name; fastcgi_param SCRIPT_NAME $ fastcgi_script_name; fastcgi_param QUERY_STRING $ args; ...其他fastcgi_param的 } 位置@drupal { fastcgi_pass ...; fastcgi_param SCRIPT_FILENAME /path/to/index.php; fastcgi_param SCRIPT_NAME /index.php; fastcgi_param QUERY_STRING q = $ uri&$ args; ...其他fastcgi_param的 }
在以下示例中,
location / { try_files $ uri $ uri / @drupal; }
该try_files
指令相当于
location / { error_page 404 = @drupal; log_not_found off; }
和这里,
location~ \ .php $ { try_files $ uri @drupal; fastcgi_pass ...; fastcgi_param SCRIPT_FILENAME / path / to $ fastcgi_script_name; ... }
try_files
在将请求传递给FastCGI服务器之前检查PHP文件是否存在。
WordPress和Joomla的示例:
location / { try_files $ uri $ uri / @wordpress; } location~ \ .php $ { try_files $ uri @wordpress; fastcgi_pass ...; fastcgi_param SCRIPT_FILENAME / path / to $ fastcgi_script_name; ...其他fastcgi_param的 } 位置@wordpress { fastcgi_pass ...; fastcgi_param SCRIPT_FILENAME /path/to/index.php; ...其他fastcgi_param的 }
句法: | types { ... } |
---|---|
默认: |
types { text / html html; image / gif gif; image / jpeg jpg; } |
语境: | http ,server ,location |
将文件名扩展名映射到MIME类型的响应。扩展名不区分大小写。可以将多个扩展映射到一种类型,例如:
types { application / octet-stream bin exe dll; application / octet-stream deb; application / octet-stream dmg; }
使用nginx在conf/mime.types
文件中分发足够完整的映射表 。
要使特定位置application/octet-stream
为所有请求发出“ ”MIME类型,可以使用以下配置:
location / download / { types {} default_type application / octet-stream; }
句法: | types_hash_bucket_size size; |
---|---|
默认: |
types_hash_bucket_size 64;
|
语境: | http ,server ,location |
设置类型哈希表的桶大小。设置哈希表的详细信息在单独的文档中提供 。
在1.5.13版之前,默认值取决于处理器缓存行的大小。
句法: | types_hash_max_size size; |
---|---|
默认: |
types_hash_max_size 1024;
|
语境: | http ,server ,location |
设置size
类型哈希表的最大值。设置哈希表的详细信息在单独的文档中提供 。
句法: | underscores_in_headers on | off; |
---|---|
默认: |
underscores_in_headers off;
|
语境: | http , server |
启用或禁用客户端请求标头字段中下划线的使用。禁用下划线时,名称包含下划线的请求标头字段将标记为无效,并受到ignore_invalid_headers指令的约束 。
如果在服务器级别指定了该指令,则仅在服务器是默认服务器时使用其值。指定的值也适用于侦听同一地址和端口的所有虚拟服务器。
句法: | variables_hash_bucket_size size; |
---|---|
默认: |
variables_hash_bucket_size 64;
|
语境: | http |
设置变量哈希表的桶大小。设置哈希表的详细信息在单独的文档中提供 。
句法: | variables_hash_max_size size; |
---|---|
默认: |
variables_hash_max_size 1024;
|
语境: | http |
设置size
变量哈希表的最大值。设置哈希表的详细信息在单独的文档中提供 。
在1.5.13版之前,默认值为512。
嵌入式变量
ngx_http_core_module
模块支持名称与Apache Server变量匹配的嵌入变量。首先,这些是代表客户端请求的报头字段的变量,例如$http_user_agent
,$http_cookie
等。还有其他变量:
$arg_
name
name
请求行中的 参数$args
- 请求行中的参数
$binary_remote_addr
- 客户端地址采用二进制形式,IPv4地址的值长度始终为4个字节,IPv6地址的长度为16个字节
$body_bytes_sent
- 发送到客户端的字节数,不包括响应头; 此变量与 Apache模块 的“
%B
”参数 兼容mod_log_config
$bytes_sent
- 发送到客户端的字节数(1.3.8,1.2.5)
$connection
- 连接序列号(1.3.8,1.2.5)
$connection_requests
- 当前通过连接发出的请求数(1.3.8,1.2.5)
$content_length
- “Content-Length”请求标头字段
$content_type
- “Content-Type”请求标头字段
- 该
name
饼干 $document_root
- root或alias指令当前请求的值
$document_uri
- 与...一样
$uri
$host
- 按此优先顺序:来自请求行的主机名,或来自“主机”请求标头字段的主机名,或与请求匹配的服务器名称
$hostname
- 主机名
$http_
name
- 任意请求头字段; 变量名称的最后一部分是字段名称转换为小写,短划线由下划线替换
$https
- “
on
”如果连接在SSL模式下运行,或者否则为空字符串 $is_args
- “
?
”如果请求行有参数,否则为空字符串 $limit_rate
- 设置此变量可启用响应速率限制; 见limit_rate
$msec
- 以毫秒为单位的当前时间(毫秒)(1.3.9,1.2.6)
$nginx_version
- nginx版本
$pid
- 工人流程的PID
$pipe
- “
p
”如果请求是流水线的,“.
”否则(1.3.12,1.2.7) $proxy_protocol_addr
- 来自PROXY协议头的客户端地址,否则为空字符串(1.5.12)必须先通过
proxy_protocol
在listen指令中设置参数来启用PROXY协议 。 $proxy_protocol_port
- 来自PROXY协议头的客户端端口,否则为空字符串(1.11.0)必须先通过
proxy_protocol
在listen指令中设置参数来启用PROXY协议 。 $query_string
- 与...一样
$args
$realpath_root
- 与当前请求 的根或别名指令值对应的绝对路径名 ,所有符号链接都解析为实际路径
$remote_addr
- 客户地址
$remote_port
- 客户端口
$remote_user
- 随基本身份验证提供的用户名
$request
- 完整的原始请求行
$request_body
- 请求机构当请求体被读取到内存缓冲区时, 变量的值在proxy_pass, fastcgi_pass, uwsgi_pass和 scgi_pass指令处理的位置可用 。
$request_body_file
- 请求正文的临时文件的名称在处理结束时,需要删除该文件。要始终将请求主体写入文件, 需要启用client_body_in_file_only。当在代理请求或对FastCGI / uwsgi / SCGI服务器的请求中传递临时文件的名称时,应分别通过proxy_pass_request_body off, fastcgi_pass_request_body off, uwsgi_pass_request_body off或scgi_pass_request_body off 指令禁用传递请求体。 。
$request_completion
- “
OK
”如果请求已完成,或者否则为空字符串 $request_filename
- 基于根或别名 指令以及请求URI 的当前请求的文件路径
$request_id
- 16个随机字节生成的唯一请求标识符,十六进制(1.11.0)
$request_length
- 请求长度(包括请求行,标题和请求体)(1.3.12,1.2.7)
$request_method
- 请求方法,通常是“
GET
”或“POST
” $request_time
- 请求处理时间,以秒为单位,分辨率为毫秒(1.3.9,1.2.6); 从客户端读取第一个字节后经过的时间
$request_uri
- 完整的原始请求URI(带参数)
$scheme
- 请求方案,“
http
”或“https
” $sent_http_
name
- 任意响应头字段; 变量名称的最后一部分是字段名称转换为小写,短划线由下划线替换
$sent_trailer_
name
- 在响应结束时发送的任意字段(1.13.2); 变量名称的最后一部分是字段名称转换为小写,短划线由下划线替换
$server_addr
- 接受请求的服务器的地址计算此变量的值通常需要一次系统调用。为避免系统调用,listen指令必须指定地址并使用该
bind
参数。 $server_name
- 接受请求的服务器的名称
$server_port
- 接受请求的服务器的端口
$server_protocol
- 请求协议,通常是“
HTTP/1.0
”,“HTTP/1.1
”或“ HTTP / 2.0 ” $status
- 回应状态(1.3.2,1.2.2)
$tcpinfo_rtt
,$tcpinfo_rttvar
,$tcpinfo_snd_cwnd
,$tcpinfo_rcv_space
- 有关客户端TCP连接的信息; 在支持
TCP_INFO
套接字选项的 系统上可用 $time_iso8601
- 当地时间采用ISO 8601标准格式(1.3.12,1.2.7)
$time_local
- 通用日志格式的本地时间(1.3.12,1.2.7)
$uri
- 请求中的当前URI,规范化
$uri
在请求处理期间 ,值可能会发生变化,例如在执行内部重定向或使用索引文件时。