nginx 内嵌变量

nginx 的 ngx_http_core_module 模块支持与 apache 服务器变量名称相匹配的嵌入式变量。首先,这些是代表客户端请求头的变量,比如 $http_user_agent、$http_cookie 等。还有其他变量,如下:

$arg_name

请求行中的参数名称

$args

请求行中的参数

$binary_remote_addr

二进制形式的客户端地址,IPv4 地址的值长度始终为 4 个字节,IPv6 地址的值长度始终为 16 个字节

$body_bytes_sent

发送到客户端的字节数,不包括响应头;此变量与 apache 的 mod_log_config 模块的“%B”参数兼容

$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

表示 Http 的请求头 “Content-Length” 字段

$content_type

表示 Http 的请求头 “Content-Type” 字段

$cookie_name

Cookie 名称

$document_root

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

$document_uri

与 $uri 相同

$host

按此优先顺序取值:

(1)请求行中的主机名

(2)请求头中的 “host” 字段中的主机名

(3)匹配该请求的服务器主机名

$hostname

主机名

$http_name

任意请求头字段,变量名的最后一部分是字段名转换为小写,短划线替换为下划线

$https

如果连接在 SSL 模式下运行,则为 “on”;否则为空字符串;

$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 协议必须事先通过在 listen 指令中设置 proxy_protocol 参数来启用。

$proxy_protocol_port

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

client port from the PROXY protocol header (1.11.0)

PROXY 协议必须事先通过在 listen 指令中设置 proxy_protocol 参数来启用。

$proxy_protocol_server_addr

来自 PROXY 协议头的服务器地址 (1.17.6) 

PROXY 协议必须事先通过在 listen 指令中设置 proxy_protocol 参数来启用。

$proxy_protocol_server_port

来自 PROXY 协议头的服务器端口 (1.17.6)

PROXY 协议必须事先通过在 listen 指令中设置 proxy_protocol 参数来启用。

$query_string

与 $args 相同

$realpath_root

与当前请求的 root 或 alias 指令值对应的绝对路径名,所有符号链接都解析为真实路径

$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

当前请求的文件路径,基于 root 或 alias 指令,以及请求 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 的值可能会在请求处理期间发生变化,例如在进行内部重定向或使用索引文件时。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号