nginx ngx_http_core_module 内置变量

ngx_http_core_module 模块支持与 Apache 服务器相同名称的内置变量。首先,这些都是表示客户端请求头字段的变量,例如 $http_user_agent 、$http_cookie 等等。还有其他变量:

$arg_name

请求行中的参数名称

$args

请求行中的参数

$binary_remote_addr

二进制形式的客户端地址,值的长度总是 4 个字节

$body_bytes_sent

发送给客户端的字节数,不算响应头;这个变量兼容 mod_log_config Apache 模块的“%B”参数。

$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”

$cookie_name

cookie 名称

$document_root

当前请求的 root 或 alias 指令的值

$document_uri

同 $uri

$host

按照这个优先级顺序:请求行的主机名,请求头参数“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

获取代理代理协议头的客户端地址,如果是直接访问,该值为空字符串。(1.5.12)
代理协议必须预先在 listen 指令中通过设置 proxy_protocol 参数启用。

$query_string

同 $args

$realpath_root

当前请求的文档根目录或别名的真实路径,会将所有符号连接转换为真实路径。

$remote_addr

客户端地址

$remote_port

客户端端口

$remote_user

用于HTTP基础认证服务的用户名

$request

完整的原始请求行

$request_body

请求体
此变量可在 location 中使用,将请求主体通过 proxy_pass, fastcgi_pass, uwsgi_pass, 和 scgi_pass 传递给下一级的代理服务器。

$request_body_file

将客户端请求主体保存在临时文件中。处理过程接收后,需要删除这个文件。如果一直将请求体写入一个文件, client_body_in_file_only 需要被启用。如果一个临时文件的名称是在代理请求中传递的,或者在请求中传递给一个 FastCGI/uwsgi/SCGI 服务器, 传递请求体需要分别禁用 proxy_pass_request_body offfastcgi_pass_request_body offuwsgi_pass_request_body off 或者 scgi_pass_request_body off 指令。

$request_completion

如果请求完成,则值为“OK”,否则为空字符串。

$request_filename

当前请求的文件路径,基于 root 或者 alias 指令,以及 URI。

$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

自定义影响头字段;变量名的最后部分是破折号替换为下划线并且转换为小写字符的字段名字。

$server_addr

接受请求的服务器地址
计算这个变量的值通常需要一个系统调用。为了避免系统调用,listen指令必须指定地址,并且使用绑定参数。

$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

Common Log 格式的本地时间(1.3.12, 1.2.7)

$uri

当前请求标准化的 URI
$uri 的值在请求处理过程中可能改变,例如,当内部转发,或者使用索引文件时。