nginx全局id-request_id

模块 ngx_http_core_module

模块 ngx_http_core_module

指令
     absolute_redirect
     aio
     aio_write
     别名
     auth_delay
     chunked_transfer_encoding
     client_body_buffer_size
     client_body_in_file_only
     client_body_in_single_buffer
     client_body_temp_path
     client_body_timeout
     client_header_buffer_size
     client_header_timeout
     client_max_body_size
     connection_pool_size
     default_type
     directio
     directio_alignment
     disable_symlinks
     error_page
     etag
     http
     if_modified_si
     nceignore_invalid_headers
     内部
     keepalive_disable
     keepalive_requests
     keepalive_time
     keepalive_timeout
     large_client_header_buffers
     limit_ except
     limit_rate
     limit_rate_after
     lingering_close
     lingering_time
     lingering_timeout
     监听
     位置
     log_not_found
     log_subrequest
     max_ranges
     merge_slashes
     msie_padding
     msie_refresh
     open_file_cache
     open_file_cache_errors
     open_file_cache_min_uses
     open _file_cache_valid
     输出缓冲区
     port_in_redirect
     推迟_
     输出 read_ahead
     recursive_error_pages
     request_pool_size
     Reset_timedout_connection
     解析器
     resolver_timeout
     root
     满足
     send_lowat
     send_timeout
     sendfile
     sendfile_max_chunk
     服务器
     server_name
     server_name_in_redirect server_names_hash_bucket_size
     server_names_hash_bucket_size
     server_names_hash_max_size
     server_tokens
     subrequest_output_buffer_size
     tcp_nodelay
     tcp_nop ush
     try_files
     types
     types_hash_bucket_size
     types_hash_max_size
     underscores_in_headers
     Variables_hash_bucket_size
     Variables_hash_max_size
嵌入变量

指令

句法: absolute_redirect on | off;
默认:
绝对重定向开启;
语境: httpserver,location

该指令出现在版本 1.11.8 中。

如果禁用,nginx 发出的重定向将是相对的。

另请参阅server_name_in_redirect 和port_in_redirect指令。

句法: aio on | off | threads[=pool];
默认:
合一关闭;
语境: httpserver,location

该指令出现在0.8.11版本中。

在 FreeBSD 和 Linux 上启用或禁用异步文件 I/O (AIO):

地点/视频/ {
    合力开启;
    输出缓冲区 1 64k;
}

 

在 FreeBSD 上,从 FreeBSD 4.3 开始可以使用 AIO。在 FreeBSD 11.0 之前,AIO 可以静态链接到内核中:

选项 VFS_AIO

或作为内核可加载模块动态加载:

kldload aio

 

在 Linux 上,从内核版本 2.6.22 开始可以使用 AIO。另外,必须启用 directio,否则读取将被阻塞:

地点/视频/ {
    合力开启;
    方向512;
    输出缓冲区 1 128k;
}

 

在 Linux 上, directio 只能用于读取在 512 字节边界(对于 XFS 为 4K)对齐的块。文件未对齐的末尾以阻塞模式读取。对于字节范围请求和不是从文件开头开始的 FLV 请求也是如此:在文件开头和结尾读取未对齐的数据将被阻塞。

当 Linux 上同时启用 AIO 和sendfile时,AIO 用于大于或等于directio指令中指定大小的文件,而sendfile用于较小大小的文件或禁用 directio时。

地点/视频/ {
    发送文件;
    合力开启;
    方向8m;
}

 

最后,可以使用多线程(1.7.11) 读取和发送文件,而不会阻塞工作进程:

地点/视频/ {
    发送文件;
    aio 线程;
}

读取和发送文件操作被卸载到指定 的线程。如果省略池名称,则default使用名称为“ ”的池。池名称也可以使用变量设置:

aio 线程=池$磁盘;

默认情况下,多线程是禁用的,需要通过 --with-threads配置参数启用。目前,多线程仅与epoll、 kqueue和 eventport方法兼容 。仅 Linux 支持多线程发送文件。

另请参阅sendfile指令。

句法: aio_write on | off;
默认:
aio_write 关闭;
语境: httpserver,location

该指令出现在版本 1.9.13 中。

如果启用aio,则指定是否用于写文件。目前,这仅在使用时有效 aio threads ,并且仅限于使用从代理服务器接收的数据写入临时文件。

句法: alias path;
默认:
语境: location

定义指定位置的替换。例如,使用以下配置

位置 /i/ {
    别名 /data/w3/images/;
}

根据“ ”的请求,将发送 /i/top.gif文件 。/data/w3/images/top.gif

path值可以包含变量,除了$document_root$realpath_root

如果在alias使用正则表达式定义的位置内使用,则此类正则表达式应包含捕获并alias应引用这些捕获 (0.7.40),例如:

位置 ~ ^/users/(.+\.(?:gif|jpe?g|png))$ {
    别名 /data/w3/images/$1;
}

 

当位置与指令值的最后部分匹配时:

位置/图像/ {
    别名 /data/w3/images/;
}

最好使用 root 指令:

位置/图像/ {
    根/数据/w3;
}

 

句法: auth_delay time;
默认:
auth_delay 0s;
语境: httpserver,location

该指令出现在版本 1.17.10 中。

当访问受到密码、子请求结果或 JWT限制 时,使用 401 响应代码延迟处理未经授权的请求,以防止定时攻击 。

句法: chunked_transfer_encoding on | off;
默认:
分块传输编码开启;
语境: httpserver,location

允许禁用 HTTP/1.1 中的分块传输编码。尽管标准有要求,但当使用不支持分块编码的软件时,它可能会派上用场。

句法: client_body_buffer_size size;
默认:
client_body_buffer_size 8k|16k;
语境: httpserver,location

设置读取客户端请求正文的缓冲区大小。如果请求正文大于缓冲区,则整个请求正文或仅其一部分将写入 临时文件。默认情况下,缓冲区大小等于两个内存页。这是 x86、其他 32 位平台和 x86-64 上的 8K。在其他64位平台上通常是16K。

句法: client_body_in_file_only on | clean | off;
默认:
client_body_in_file_only 关闭;
语境: httpserver,location

确定 nginx 是否应将整个客户端请求正文保存到文件中。该指令可以在调试期间、使用 $request_body_file 变量或 模块 ngx_http_perl_module的$r->request_body_file方法时使用。

当设置为 value 时on,请求处理后不会删除临时文件。

该值clean将导致请求处理后留下的临时文件被删除。

句法: client_body_in_single_buffer on | off;
默认:
client_body_in_single_buffer 关闭;
语境: httpserver,location

确定 nginx 是否应将整个客户端请求正文保存在单个缓冲区中。使用变量时建议使用该指令 $request_body ,以节省所涉及的复制操作的数量。

句法: client_body_temp_path path [level1 [level2 [level3]]];
默认:
client_body_temp_path client_body_temp;
语境: httpserver,location

定义一个目录,用于存储保存客户端请求正文的临时文件。指定目录下最多可以使用三级子目录层次结构。例如,在以下配置中

client_body_temp_path /spool/nginx/client_temp 1 2;

临时文件的路径可能如下所示:

/spool/nginx/client_temp/7/45/00000123457

 

句法: client_body_timeout time;
默认:
client_body_timeout 60s;
语境: httpserver,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;
语境: httpserver,location

设置客户端请求正文允许的最大大小。如果请求的大小超过配置的值,则会向客户端返回 413(请求实体太大)错误。请注意,浏览器无法正确显示此错误。设置size为 0 将禁用对客户端请求正文大小的检查。

句法: connection_pool_size size;
默认:
连接池大小 256|512;
语境: http,server

允许精确调整每个连接的内存分配。该指令对性能的影响很小,通常不应使用。默认情况下,该大小在 32 位平台上等于 256 字节,在 64 位平台上等于 512 字节。

在版本 1.9.8 之前,所有平台上的默认值为 256。

 

句法: default_type mime-type;
默认:
默认类型文本/纯文本;
语境: httpserver,location

定义响应的默认 MIME 类型。可以使用types指令设置文件扩展名到 MIME 类型的映射。

句法: directio size | off;
默认:
方向关闭;
语境: httpserver,location

该指令出现在 0.7.7 版本中。

当读取大于或等于指定的文件时, 允许使用O_DIRECT标志(FreeBSD、Linux)、F_NOCACHE标志(macOS)或函数(Solaris) 。 该指令自动禁用 (0.7.15)对于给定请求使用 sendfile 。它对于提供大文件很有用: directio()size

方向4m;

或者在 Linux 上 使用aio时。

句法: directio_alignment size;
默认:
directio_alignment 512;
语境: httpserver,location

该指令出现在0.8.11版本中。

设置directio 的对齐方式 。大多数情况下,512 字节对齐就足够了。但在Linux下使用XFS时,需要增加到4K。

句法: disable_symlinks off;
disable_symlinks on | if_not_owner [from=part];
默认:
禁用符号链接关闭;
语境: httpserver,location

该指令出现在 1.1.15 版本中。

确定打开文件时应如何处理符号链接:

off
路径名中的符号链接是允许的,但不被检查。这是默认行为。
on
如果路径名的任何部分是符号链接,则拒绝访问文件。
if_not_owner
如果路径名的任何组成部分是符号链接,并且该链接和该链接指向的对象具有不同的所有者,则对文件的访问将被拒绝。
from=part
检查符号链接(参数onif_not_owner)时,通常会检查路径名的所有组成部分。from通过另外指定=参数,可以避免检查路径名开头部分的符号链接 part。在这种情况下,仅从指定初始部分后面的路径名部分检查符号链接。如果该值不是所检查路径名的初始部分,则会检查整个路径名,就好像根本未指定此参数一样。如果该值与整个文件名匹配,则不检查符号链接。参数值可以包含变量。

 

例子:

from=$document_root 上禁用_符号链接;

 

该指令仅适用于具有 openat()fstatat()接口的系统。此类系统包括现代版本的 FreeBSD、Linux 和 Solaris。

参数onif_not_owner 添加处理开销。

在不支持仅为搜索而打开目录的系统上,要使用这些参数,工作进程需要对所有正在检查的目录具有读取权限。

 

 

ngx_http_autoindex_module 、 ngx_http_random_index_modulengx_http_dav_module模块 当前忽略此指令。

 

句法: error_page code ... [=[response]] uri;
默认:
语境: httpserverlocation,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 和方法,则可以将错误处理传递到指定位置:

地点 / {
    error_page 404 = @fallback;
}

位置@fallback {
    proxy_pass http://backend;
}

 

 

如果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 开启;
语境: httpserver,location

该指令出现在 1.3.3 版本中。

启用或禁用静态资源的“ETag”响应头字段的自动生成。

句法: http { ... }
默认:
语境: main

提供在其中指定 HTTP 服务器指令的配置文件上下文。

句法: if_modified_since off | exact | before;
默认:
if_modified_since 精确;
语境: httpserver,location

该指令出现在0.7.24版本中。

指定如何将响应的修改时间与“If-Modified-Since”请求头字段中的时间进行比较:

off
响应始终被视为已修改(0.7.34);
exact
完全符合;
before
响应的修改时间小于或等于“If-Modified-Since”请求头字段中的时间。

 

句法: ignore_invalid_headers on | off;
默认:
忽略无效标头;
语境: http,server

控制是否应忽略具有无效名称的标头字段。有效名称由英文字母、数字、连字符和可能的下划线组成(由underscores_in_headers指令控制 )。

如果在服务器级别 指定该指令,则可以使用默认服务器中的值。“虚拟服务器选择”部分提供了详细信息。

句法: internal;
默认:
语境: location

指定给定位置只能用于内部请求。对于外部请求,返回客户端错误404(Not Found)。内部请求如下:

 

例子:

error_page 404 /404.html;

位置= /404.html {
    内部的;
}

 

每个请求的内部重定向次数限制为 10 次,以防止在不正确的配置中可能出现请求处理周期。如果达到此限制,则会返回错误 500(内部服务器错误)。在这种情况下,可以在错误日志中看到“重写或内部重定向周期”消息。

 

句法: keepalive_disable none | browser ...;
默认:
keepalive_disable msie6;
语境: httpserver,location

禁用与行为不当的浏览器的保持活动连接。这些browser参数指定哪些浏览器将受到影响。一旦收到 POST 请求,该值msie6将禁用与旧版本 MSIE 的保持活动连接。该值safari禁用 macOS 和类 macOS 操作系统上的 Safari 和类 Safari 浏览器的保持活动连接。该值none允许与所有浏览器保持活动连接。

在版本 1.1.18 之前,该值safari与所有操作系统上的所有 Safari 和类 Safari 浏览器相匹配,并且默认情况下禁用与它们的保持活动连接。

 

句法: keepalive_requests number;
默认:
keepalive_requests 1000;
语境: httpserver,location

该指令出现在0.8.0版本中。

设置通过一个保持活动连接可以处理的最大请求数。发出最大请求数后,连接将关闭。

定期关闭连接对于释放每个连接的内存分配是必要的。因此,使用过高的最大请求数可能会导致内存使用过多,不建议这样做。

 

在 1.19.10 版本之前,默认值为 100。

 

句法: keepalive_time time;
默认:
keepalive_time 1小时;
语境: httpserver,location

该指令出现在版本 1.19.10 中。

限制通过一个保持活动连接可以处理请求的最长时间。达到此时间后,连接将在后续请求处理后关闭。

句法: keepalive_timeout timeout [header_timeout];
默认:
keepalive_timeout 75s;
语境: httpserver,location

第一个参数设置一个超时时间,在此期间,保持活动的客户端连接将在服务器端保持打开状态。零值会禁用保持活动的客户端连接。time可选的第二个参数在“Keep-Alive: timeout= ”响应头字段中设置一个值。两个参数可能不同。

timeMozilla 和 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(Bad Request)错误。缓冲区仅按需分配。默认情况下,缓冲区大小等于 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) 模块指令限制对其他方法的访问:

限制_例外 GET {
    允许 192.168.1.0/32;
    否认一切;
}

请注意,这将限制对 GET 和 HEAD 之外的所有方法的访问。

句法: limit_rate rate;
默认:
限制率0;
语境: httpserverlocation,if in location

限制向客户端传输响应的速率。rate以每秒字节数指定。零值禁用速率限制。该限制是按请求设置的,因此如果客户端同时打开两个连接,则总体速率将是指定限制的两倍。

参数值可以包含变量(1.17.0)。在应根据特定条件限制速率的情况下,它可能很有用:

地图$slow $rate {
    1 个 4k;
    2 8k;
}

限制率$率;

 

也可以在变量中设置速率限制 $limit_rate,但是从1.17.0版本开始,不建议使用这种方法:

服务器 {

    如果($慢){
        设置 $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;
语境: httpserverlocation,if in location

该指令出现在0.8.0版本中。

设置初始量,之后向客户端进一步传输响应将受到速率限制。参数值可以包含变量(1.17.0)。

例子:

位置/flv/ {
    .flv;
    limit_rate_after 500k;
    limit_rate 50k;
}

 

句法: lingering_close off | on | always;
默认:
缠绵_关闭;
语境: httpserver,location

该指令出现在版本 1.1.0 和 1.0.6 中。

控制 nginx 如何关闭客户端连接。

默认值“ on”指示 nginx 在完全关闭连接之前 等待并 处理来自客户端的其他数据,但前提是启发式表明客户端可能正在发送更多数据。

值“ always”将导致nginx无条件等待并处理额外的客户端数据。

值“ off”告诉 nginx 不要等待更多数据并立即关闭连接。此行为违反了协议,在正常情况下不应使用。

要控制关闭 HTTP/2连接,必须在服务器级别指定该指令(1.19.1)。

句法: lingering_time time;
默认:
lingering_time 30s;
语境: httpserver,location

lingering_close生效时,该指令指定 nginx 处理(读取和忽略)来自客户端的附加数据的最长时间。之后,即使会有更多数据,连接也会关闭。

句法: lingering_timeout time;
默认:
lingering_timeout 5s;
语境: httpserver,location

lingering_close生效时,该指令指定更多客户端数据到达的最大等待时间。如果在此期间未收到数据,则连接将关闭。否则,数据将被读取并忽略,并且 nginx 会再次开始等待更多数据。重复“等待-读取-忽略”循环,但时间不超过 lingering_time指令指定的时间。

句法: listen address[:port] [default_server] [ssl] [http2 | quic] [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 | quic] [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 | quic] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
默认:
听 *:80 | *:8000;
语境: server

设置IP 的addressport,或者path服务器将在其上接受请求的 UNIX 域套接字设置 和 。可以同时指定addressport、或仅address或仅。portAnaddress也可以是主机名,例如:

听127.0.0.1:8000;
听127.0.0.1;
听8000;
听*:8000;
听本地主机: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将成为该对的默认服务器。

在 0.8.21 之前的版本中,此参数简单命名 default

 

参数ssl(0.7.14) 允许指定此端口上接受的所有连接都应在 SSL 模式下工作。这允许对处理 HTTP 和 HTTPS 请求的服务器 进行更紧凑的配置。

参数http2(1.9.5) 将端口配置为接受 HTTP/2连接。通常,要使其正常工作ssl,还应该指定参数,但 nginx 也可以配置为接受不带 SSL 的 HTTP/2 连接。

该参数已弃用,应使用 http2指令代替。

 

参数quic(1.25.0) 将端口配置为接受 QUIC连接。

参数proxy_protocol(1.5.12) 允许指定此端口上接受的所有连接都应使用 PROXY 协议

自 1.13.11 版本起支持 PROXY 协议版本 2。

 

listen指令可以有几个特定于套接字相关系统调用的附加参数。这些参数可以在任何指令中指定 listen,但对于给定的 address:port对只能指定一次。

listen在 0.8.21 之前的版本中,它们只能在指令中与参数一起 指定default

 

setfib=number
SO_SETFIB此参数 (0.8.44) 设置监听套接字 的关联路由表、FIB(选项)。目前这仅适用于 FreeBSD。
fastopen=number
为侦听套接字 启用“ TCP 快速打开”(1.5.8),并限制 尚未完成三向握手的连接队列的最大长度。
除非服务器可以处理多次 接收 带有数据的相同 SYN 数据包, 否则不要启用此功能 。
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()在这种情况下将进行系统调用来确定接受连接的地址。如果使用 setfibfastopenbacklogrcvbufsndbufaccept_filterdeferredipv6only, , reuseport或参数,则对于给定的:对,将始终进行 单独的调用。so_keepaliveaddressportbind()
ipv6onlyon|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_LBFreeBSD 12+ 上使用套接字选项),允许内核在工作进程之间分配传入连接。目前仅适用于 Linux 3.9+、DragonFly BSD 和 FreeBSD 12+ (1.15.1)。
不恰当地使用此选项可能会产生安全 隐患
so_keepaliveonoff|[ keepidle]:[ keepintvl]:[ keepcnt]
此参数 (1.1.11) 配置侦听套接字的“TCP keepalive”行为。如果省略此参数,则操作系统的设置将对套接字生效。如果设置为值“ on”, SO_KEEPALIVE则为套接字打开该选项。如果它设置为值“ off”,则 SO_KEEPALIVE套接字的该选项将关闭。TCP_KEEPIDLE某些操作系统支持使用、 TCP_KEEPINTVL和套接字选项按每个套接字设置 TCP keepalive 参数TCP_KEEPCNT。在此类系统(当前为 Linux 2.4+、NetBSD 5+ 和 FreeBSD 9.0-STABLE)上,可以使用keepidlekeepintvl和 keepcnt参数来配置它们。可以省略一两个参数,在这种情况下,相应套接字选项的系统默认设置将生效。例如,
so_keepalive=30m::10
会将空闲超时 ( TCP_KEEPIDLE) 设置为 30 分钟,将探测间隔 ( TCP_KEEPINTVL) 保留为系统默认值,并将探测计数 ( TCP_KEEPCNT) 设置为 10 个探测。

 

例子:

监听127.0.0.1default_serveraccept_filter=datareadybacklog=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版本中,如果请求匹配不带“ =”和“ ^~”修饰符的前缀位置,搜索也会终止,并且不会检查正则表达式。

 

我们通过一个例子来说明上面的内容:

位置= / {
    [配置A]
}

地点 / {
    [配置B]
}

位置/文档/ {
    [配置C]
}

位置 ^~ /图片/ {
    [配置D]
}

位置 ~* \.(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_pa​​ss或 grpc_pass之一处理,则执行特殊处理。为了响应 URI 等于此字符串但没有尾部斜杠的请求,将返回带有代码 301 的永久重定向到所请求的 URI,并附加斜杠。如果不需要这样做,可以像这样定义 URI 和位置的精确匹配:

位置/用户/ {
    proxy_pass http://user.example.com;
}

位置= /用户{
    proxy_pass http://login.example.com;
}

 

句法: log_not_found on | off;
默认:
日志未找到;
语境: httpserver,location

启用或禁用将有关未找到文件的错误记录到 error_log中。

句法: log_subrequest on | off;
默认:
log_subrequest 关闭;
语境: httpserver,location

启用或禁用将子请求记录到 access_log中。

句法: max_ranges number;
默认:
语境: httpserver,location

该指令出现在版本 1.1.2 中。

限制字节范围请求中允许的最大范围数。超出限制的请求将被处理,就像没有指定字节范围一样。默认情况下,范围的数量不受限制。零值完全禁用字节范围支持。

句法: merge_slashes on | off;
默认:
合并斜杠;
语境: http,server

启用或禁用将 URI 中的两个或多个相邻斜杠压缩为单个斜杠。

请注意,压缩对于前缀字符串和正则表达式位置的正确匹配至关重要。没有它,“ //scripts/one.php”请求将不匹配

位置/脚本/ {
    ...
}

并且可以作为静态文件进行处理。所以它被转换为“ /scripts/one.php”。

off如果 URI 包含 Base64 编码的名称,则需要 进行压缩,因为 Base64/在内部使用“ ”字符。但是,出于安全考虑,最好避免关闭压缩。

如果在服务器级别 指定该指令,则可以使用默认服务器中的值。“虚拟服务器选择”部分提供了详细信息。

句法: msie_padding on | off;
默认:
msie_padding 开启;
语境: httpserver,location

启用或禁用向状态大于 400 的 MSIE 客户端的响应添加注释,以将响应大小增加到 512 字节。

句法: msie_refresh on | off;
默认:
msie_refresh 关闭;
语境: httpserver,location

启用或禁用为 MSIE 客户端发出刷新而不是重定向。

句法: open_file_cache off;
open_file_cache max=N [inactive=time];
默认:
打开文件缓存关闭;
语境: httpserver,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 | off;
默认:
open_file_cache_errors 关闭;
语境: httpserver,location

通过open_file_cache 启用或禁用文件查找错误的缓存 。

句法: open_file_cache_min_uses number;
默认:
open_file_cache_min_uses 1;
语境: httpserver,location

设置open_file_cache指令的参数number配置的时间段内文件访问的 最小值,这是文件描述符在缓存中保持打开状态所需的。 inactive

句法: open_file_cache_valid time;
默认:
open_file_cache_valid 60s;
语境: httpserver,location

设置应验证 open_file_cache元素 的时间 。

句法: output_buffers number size;
默认:
输出缓冲区 2 32k;
语境: httpserver,location

设置用于从磁盘读取响应的缓冲区的 number和。size

在 1.9.5 版本之前,默认值为 1 32k。

 

句法: port_in_redirect on | off;
默认:
port_in_redirect 打开;
语境: httpserver,location

启用或禁用在nginx 发出的 绝对重定向 中指定端口 。

重定向中主服务器名称的使用由server_name_in_redirect指令 控制。

句法: postpone_output size;
默认:
[1460] 推迟_输出
语境: httpserver,location

如果可能,客户端数据的传输将被推迟,直到 nginx 至少有size字节的数据要发送。零值禁用推迟数据传输。

句法: read_ahead size;
默认:
预读0;
语境: httpserver,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;
默认:
递归错误页面关闭;
语境: httpserver,location

启用或禁用使用 error_page 指令进行多个重定向。此类重定向的数量是有限的

句法: request_pool_size size;
默认:
请求池大小 4k;
语境: http,server

允许精确调整每个请求的内存分配。该指令对性能的影响很小,通常不应使用。

句法: reset_timedout_connection on | off;
默认:
重置超时连接关闭;
语境: httpserver,location

启用或禁用重置超时连接和 使用非标准代码 444 (1.15.2)关闭的连接。重置的执行如下。在关闭套接字之前, SO_LINGER 会在其上设置该选项,超时值为0。当套接字关闭时,会向客户端发送TCP RST,并释放该套接字占用的所有内存。这有助于避免将已关闭且缓冲区已满的套接字长时间保持在 FIN_WAIT1 状态。

需要注意的是,超时的保活连接通常会被关闭。

句法: resolver address ... [valid=time] [ipv4=on|off] [ipv6=on|off] [status_zone=zone];
默认:
语境: httpserver,location

配置用于将上游服务器的名称解析为地址的名称服务器,例如:

解析器 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 地址。如果不需要查找 IPv4 或 IPv6 地址,则可以指定 ipv4=off(1.23.1) 或参数。ipv6=off

从版本 1.5.8 开始支持将名称解析为 IPv6 地址。

 

默认情况下,nginx 使用响应的 TTL 值缓存答案。可选valid参数允许覆盖它:

解析器 127.0.0.1 [::1]:5353 有效=30s;

 

在 1.1.9 版本之前,无法调整缓存时间,并且 nginx 始终缓存答案 5 分钟。

 

为了防止 DNS 欺骗,建议在适当保护的受信任本地网络中配置 DNS 服务器。

 

可选status_zone参数 (1.17.1) 允许 收集 指定 中请求和响应的 DNS 服务器统计信息zone该参数作为我们商业订阅的一部分提供 。

句法: resolver_timeout time;
默认:
解析器超时 30 秒;
语境: httpserver,location

设置名称解析的超时时间,例如:

解析器超时5秒;

 

句法: root path;
默认:
根 html;
语境: httpserverlocation,if in location

设置请求的根目录。例如,使用以下配置

位置 /i/ {
    根/数据/w3;
}

/data/w3/i/top.gif文件将响应“ /i/top.gif”请求而发送。

path值可以包含变量,除了$document_root$realpath_root

只需将 URI 添加到指令的值即可构建文件的路径root。如果必须修改 URI, 则应使用 别名指令。

句法: satisfy all | any;
默认:
满足一切;
语境: httpserver,location

如果ngx_http_access_module、 ngx_http_auth_basic_module、 ngx_http_auth_request_module或 ngx_http_auth_jwt_module 模块 中的所有 ( all) 或至少一 ( any) 个允许访问,则允许访问。

例子:

地点 / {
    满足任何;

    允许 192.168.1.0/32;
    否认一切;

    auth_basic“关闭站点”;
    auth_basic_user_fileconf/htpasswd;
}

 

句法: send_lowat size;
默认:
send_lowat 0;
语境: httpserver,location

如果该指令设置为非零值,nginx 将尝试使用 kqueueNOTE_LOWAT方法的标志 或套接字选项来最小化客户端套接字上的发送操作数量。在这两种情况下都使用 指定的。SO_SNDLOWATsize

该指令在 Linux、Solaris 和 Windows 上被忽略。

句法: send_timeout time;
默认:
send_timeout 60s;
语境: httpserver,location

设置向客户端传输响应的超时。仅在两个连续的写入操作之间设置超时,而不是为整个响应的传输设置超时。如果客户端在这段时间内没有收到任何内容,则连接将关闭。

句法: sendfile on | off;
默认:
发送文件关闭;
语境: httpserverlocation,if in location

启用或禁用 的使用 sendfile()

从 nginx 0.8.12 和 FreeBSD 5.2.1 开始, aio可用于预加载数据sendfile()

地点/视频/ {
    发送文件;
    tcp_nopush 开启;
    合力开启;
}

在此配置中,sendfile()使用SF_NODISKIO标志进行调用,该标志不会阻止磁盘 I/O,而是报告数据不在内存中。然后,nginx 通过读取一个字节来启动异步数据加载。第一次读取时,FreeBSD 内核会将文件的前 128K 字节加载到内存中,但下一次读取只会加载 16K 块中的数据。这可以使用 read_ahead指令进行更改。

在 1.7.11 版本之前,可以使用 aio sendfile;.

 

句法: sendfile_max_chunk size;
默认:
sendfile_max_chunk 2m;
语境: httpserver,location

限制单次调用中可以传输的数据量sendfile()。如果没有限制,一个快速连接可能会完全占用工作进程。

在 1.21.4 版本之前,默认情况下没有限制。

 

句法: server { ... }
默认:
语境: http

设置虚拟服务器的配置。基于 IP(基于 IP 地址)和基于名称(基于“Host”请求标头字段)的虚拟服务器之间没有明确的区别。相反,listen指令描述应接受服务器连接的所有地址和端口,而 server_name指令列出所有服务器名称。“ nginx 如何处理请求”文档中提供了示例配置。

句法: server_name name ...;
默认:
服务器名称 ””;
语境: server

设置虚拟服务器的名称,例如:

服务器 {
    服务器名称 example.com www.example.com;
}

 

第一个名称成为主服务器名称。

服务器名称可以包含星号(“ *”)来替换名称的第一部分或最后部分:

服务器 {
    服务器名称 example.com *.example.com www.example.*;
}

此类名称称为通配符名称。

上面提到的前两个名称可以合二为一:

服务器 {
    服务器名称.example.com;
}

 

还可以在服务器名称中使用正则表达式,在名称前面加上波形符(“ ~”):

服务器 {
    服务器名称 www.example.com ~^www\d+\.example\.com$;
}

 

正则表达式可以包含捕获 (0.7.40),稍后可以在其他指令中使用:

服务器 {
    服务器名称 ~^(www\.)?(.+)$;

    地点 / {
        根/站点/$2;
    }
}

服务器 {
    服务器名称 _;

    地点 / {
        根/站点/默认;
    }
}

 

正则表达式中的命名捕获创建变量 (0.8.25),稍后可以在其他指令中使用:

服务器 {
    服务器名称 ~^(www\.)?(?<域>.+)$;

    地点 / {
        根/站点/$域;
    }
}

服务器 {
    服务器名称 _;

    地点 / {
        根/站点/默认;
    }
}

 

如果指令的参数设置为“ $hostname” (0.9.4),则插入计算机的主机名。

还可以指定空服务器名称(0.7.11):

服务器 {
    服务器名称 www.example.com "";
}

它允许该服务器处理给定地址:端口对的没有“主机”标头字段(而不是默认服务器)的请求。这是默认设置。

在0.8.48之前,默认使用机器的主机名。

 

在按名称搜索虚拟服务器期间,如果名称与多个指定变体匹配(例如通配符名称和正则表达式匹配),则将按照以下优先级顺序选择第一个匹配的变体:

  1. 确切的名字
  2. 以星号开头的最长通配符名称,例如“ *.example.com
  3. 以星号结尾的最长通配符名称,例如“ mail.*
  4. 第一个匹配的正则表达式(按照配置文件中出现的顺序)

 

服务器名称的详细描述在单独的服务器名称文档 中提供 。

句法: server_name_in_redirect on | off;
默认:
server_name_in_redirect 关闭;
语境: httpserver,location

启用或禁用在 nginx 发出的绝对重定向中使用server_name指令 指定的主服务器名称 。当禁用主服务器名称时,将使用“Host”请求标头字段中的名称。如果该字段不存在,则使用服务器的 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;
默认:
服务器令牌开启;
语境: httpserver,location

启用或禁用在错误页面和“服务器”响应标头字段中发出 nginx 版本。

参数build(1.11.10) 允许发出构建名称 以及 nginx 版本。

此外,作为我们 商业订阅的一部分,从版本 1.9.13 开始,可以使用 with 变量显式设置错误页面上的签名和“服务器”响应标头字段值string。空字符串会禁用“服务器”字段的发射。

句法: subrequest_output_buffer_size size;
默认:
子请求输出缓冲区大小 4k|8k;
语境: httpserver,location

该指令出现在版本 1.13.10 中。

设置size用于存储子请求响应正文的缓冲区。默认情况下,缓冲区大小等于一页内存。这是 4K 或 8K,具体取决于平台。然而,它可以做得更小。

该指令仅适用于响应主体保存到内存中的子请求。例如,此类子请求是由 SSI创建的。

句法: tcp_nodelay on | off;
默认:
tcp_nodelay 开启;
语境: httpserver,location

启用或禁用该选项的使用TCP_NODELAY。当连接转换为保持活动状态时,将启用该选项。此外,它还可以在 SSL 连接、无缓冲代理和WebSocket代理上启用。

句法: tcp_nopush on | off;
默认:
tcp_nopush 关闭;
语境: httpserver,location

启用或禁用TCP_NOPUSHFreeBSD 上的套接字选项或TCP_CORKLinux 上的套接字选项。仅当使用sendfile时才启用这些选项。启用该选项允许

  • 在 Linux 和 FreeBSD 4.* 上,在一个数据包中发送响应标头和文件的开头;
  • 以完整数据包发送文件。

 

句法: try_files file ... uri;
try_files file ... =code;
默认:
语境: server,location

按指定顺序检查文件是否存在,并使用第一个找到的文件进行请求处理;处理是在当前上下文中执行的。文件的路径是 file根据 别名指令从参数构造的。可以通过在名称末尾指定斜杠来检查目录是否存在,例如“ $uri/”。如果未找到任何文件, uri则会进行内部重定向到最后一个参数中指定的文件。例如:

位置/图像/ {
    try_files $uri /images/default.gif;
}

位置= /images/default.gif {
    30 秒后过期;
}

最后一个参数还可以指向命名位置,如下面的示例所示。从0.7.51版本开始,最后一个参数也可以是 code

地点 / {
    try_files $uri $uri/index.html $uri.html =404;
}

 

代理 Mongrel 的示例:

地点 / {
    try_files /system/maintenance.html
              $uri $uri/index.html $uri.html
              @杂种;
}

位置@mongrel {
    proxy_pass http://mongrel;
}

 

Drupal/FastCGI 示例:

地点 / {
    try_files $uri $uri/ @drupal;
}

位置 ~ \.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
}

在下面的示例中,

地点 / {
    try_files $uri $uri/ @drupal;
}

try_files指令相当于

地点 / {
    错误页面 404 = @drupal;
    log_not_found关闭;
}

和这里,

位置 ~ \.php$ {
    try_files $uri @drupal;

    fastcgi_pass ...;

    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;

    ...
}

try_files在将请求传递到 FastCGI 服务器之前检查 PHP 文件是否存在。

WordPress 和 Joomla 的示例:

地点 / {
    try_files $uri $uri/ @wordpress;
}

位置 ~ \.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 { ... }
默认:
类型{
    文本/html html;
    图像/gif gif;
    图像/jpeg jpg;
}
语境: httpserver,location

将文件扩展名映射到响应的 MIME 类型。扩展名不区分大小写。多个扩展可以映射到一种类型,例如:

类型{
    应用程序/八位字节流 bin exe dll;
    应用程序/八位字节流 deb;
    应用程序/八位字节流 dmg;
}

 

文件中与 nginx 一起分发了足够完整的映射表 conf/mime.types

要使特定位置application/octet-stream为所有请求发出“ ” MIME 类型,可以使用以下配置:

位置/下载/ {
    类型 { }
    default_type 应用程序/八位字节流;
}

 

句法: types_hash_bucket_size size;
默认:
types_hash_bucket_size 64;
语境: httpserver,location

设置类型哈希表的存储桶大小。设置哈希表的详细信息在单独的 文档中提供。

在版本 1.5.13 之前,默认值取决于处理器缓存行的大小。

 

句法: types_hash_max_size size;
默认:
types_hash_max_size 1024;
语境: httpserver,location

size设置类型哈希表的 最大值。设置哈希表的详细信息在单独的 文档中提供。

句法: underscores_in_headers on | off;
默认:
标题中的下划线关闭;
语境: http,server

启用或禁用在客户端请求标头字段中使用下划线。当禁用下划线的使用时,名称包含下划线的请求头字段将被标记为无效,并受到 ignore_invalid_headers指令的约束。

如果在服务器级别 指定该指令,则可以使用默认服务器中的值。“虚拟服务器选择”部分提供了详细信息。

句法: variables_hash_bucket_size size;
默认:
变量_哈希_桶_大小 64;
语境: http

设置变量哈希表的存储桶大小。设置哈希表的详细信息在单独的 文档中提供。

句法: variables_hash_max_size size;
默认:
Variables_hash_max_size 1024;
语境: http

size设置变量哈希表的 最大值。设置哈希表的详细信息在单独的 文档中提供。

在 1.5.13 版本之前,默认值为 512。

 

嵌入变量

ngx_http_core_module模块支持名称与 Apache 服务器变量匹配的嵌入变量。首先,这些是代表客户端请求头字段的变量,例如$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)
$connection_time
连接时间(以秒为单位,精度为毫秒) (1.19.10)
$content_length
“Content-Length”请求头字段
$content_type
“Content-Type”请求头字段
饼干name
$document_root
当前请求的 别名指令的值
$document_uri
与...一样$uri
$host
按此优先顺序:请求行中的主机名,或“Host”请求标头字段中的主机名,或与请求匹配的服务器名称
$hostname
主机名
$http_name
任意请求头字段;变量名称的最后一部分是转换为小写的字段名称,其中破折号替换为下划线
$https
“ on” 如果连接在 SSL 模式下运行,否则为空字符串
$is_args
“ ?” 如果请求行有参数,否则为空字符串
$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 协议必须预先通过设置 listenproxy_protocol指令中的参数来启用。

$proxy_protocol_port
来自 PROXY 协议标头的客户端端口 (1.11.0)

PROXY 协议必须预先通过设置 listenproxy_protocol指令中的参数来启用。

$proxy_protocol_server_addr
PROXY 协议标头中的服务器地址 (1.17.6)

PROXY 协议必须预先通过设置 listenproxy_protocol指令中的参数来启用。

$proxy_protocol_server_port
PROXY 协议标头中的服务器端口 (1.17.6)

PROXY 协议必须预先通过设置 listenproxy_protocol指令中的参数来启用。

$proxy_protocol_tlv_name
来自 PROXY 协议标头 (1.23.2) 的 TLV。可以name是 TLV 类型名称或其数值。在后一种情况下,该值是十六进制的,并且应带有前缀0x
$proxy_protocol_tlv_alpn
$proxy_protocol_tlv_0x01
SSL TLV 还可以通过 TLV 类型名称或其数值进行访问,两者都带有前缀ssl_
$proxy_protocol_tlv_ssl_version
$proxy_protocol_tlv_ssl_0x21

支持以下 TLV 类型名称:

  • alpn0x01) - 连接上使用的上层协议
  • authority0x02) - 客户端传递的主机名值
  • unique_id0x05) - 唯一连接 ID
  • netns0x30) - 命名空间的名称
  • ssl0x20) - 二进制 SSL TLV 结构

 

支持以下 SSL TLV 类型名称:

  • ssl_version0x21) - 客户端连接中使用的 SSL 版本
  • ssl_cn0x22) - SSL 证书通用名称
  • ssl_cipher0x23) - 使用的密码的名称
  • ssl_sig_alg0x24) - 用于签署证书的算法
  • ssl_key_alg0x25) - 公钥算法

 

此外,还支持以下特殊 SSL TLV 类型名称:

  • ssl_verify - 客户端 SSL 证书验证结果, 0如果客户端提供了证书并且已成功验证,否则为非零。

 

PROXY 协议必须预先通过设置 listenproxy_protocol指令中的参数来启用。

$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 ”或“ HTTP/3.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可能会在请求处理期间发生变化,例如在进行内部重定向时或使用索引文件时。

posted @ 2024-03-15 09:40  CharyGao  阅读(289)  评论(0编辑  收藏  举报