整理一下Nginx中常用的变量
2022-01-25 19:13:43
$arg_[parameter] http
: 请求中某个参数的值。例:/index.html?size=100
,可以用 $arg_size
获取 100
。
$args
:获取请求 URL 中所有的参数,如 /index.html?size=100&height=12
可以用 $args
获取 size=100&height=12
;
$binary_remote_addr
:二进制格式的客户端地址。
$body_bytes_sent
: 客户端发送的 http 响应中,包体部分的字节数。
$content_length
: 客户端请求头部中的 Content-Length
字段。
$contenttype
: 客户端请求头部中的 Content-Type
字段。
$cookie[cookie]
: 在客户端请求头部中的 cookie
字段。
$document_root
: 当前请求所使用的 root
指令配置项的值。
$uri
: 当前请求 URI,不带任何参数。
$document_uri
: 同上
$request_uri
: 客户端发来的原始请求 URI,带完整的参数。$uri
和 $document_uri
未必是用户的原始请求,在内部重定向后可能是重定向后的 URI,而 $requesturi
永远不会改变,始终是客户端原始 URI。
$host
: 客户端请求头部中的 Host
字段,如果 Host
字段不存在,则以实际处理的虚拟主机名称(server_name
)代替。
$hostname
: Nginx 所在机器的名称。
$http[header]
: 当前 http 请求中相应头部的值。
$senthttp[header]
: 返回客户端的 http 响应中响应头部的值。
$is_args
: 请求中的 URI 是否带参数,如果带参数,$is_args
值为 ?
,否则为空字符串。
$limit_rate
: 当前连接的限速是多少,0
表示无限速。
$nginx_version
: Nginx 的版本号。
$query_string
: URI 中的参数,与 $args
相同,$query_string
是只读的不会改变
$remote_addr
: 客户端地址。
$remote_port
: 客户端端口。
$remote_user
: 使用 Auth Basic 模块时定义的用户名。
$request_filename
: 表用户请求中 URI 经过 root
或 alias
指令转换后的文件路径。
$request_body
: http 请求中的包体,该参数只在 proxy_pass
或 fastcgi_pass
中有意义。
$request_body_file
: http 请求中的包体存储的临时文件名。
$request_completion
: 当请求已经全部完成时,其值为 ok
,若没有完成,则其值为空字符串;或者在断点续传等情况下使用 HTTP range 访问的并不是文件的最后一块,那么其值也是空字符串。
$request_method
: http 请求的方法名,如 GET
、PUT
、POST
等。
$scheme
: http scheme 即使用的协议,如在请求 zze.xyz
中表示为 https
。
$server_addr
: 服务器地址。
$server_name
: 服务器名称。
$server_port
: 服务器端口。
$server_protocol
: 服务器向客户端发送响应的协议,如 HTTP/1.1
或 HTTP/1.0
。
$time_local
: 请求匹配到 location
后到记录到日志的时间,粗略可以看做请求到达的时间,详细可参考 https://segmentfault.com/q/1010000007462442。
$request
: 当前请求的请求方法及协议。
$status
: 响应给当前请求的状态码。
$http_referer
: 请求的来源地址,即请求的上一跳地址。
$http_user_agent
: 客户端信息,包含浏览器版本、操作系统版本等信息。
$http_x_forwarded_for
:多层代理时,记录真实源地址及每一层代理的地址,以 ,
分隔,如 "10.0.1.1, 172.16.1.6"
,前提是代理服务器中设定了对应请求头 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
。
$http_x_real_ip
:经过一层代理时的客户端真实地址,仅记录源地址的上级地址,前提是代理服务器中设定了对应请求头 proxy_set_header X-Real-IP $remote_addr;
。
upstream_cache_status
:请求是否命中代理缓存,MISS
表示未命中,BYPASS
表示是显示指定的后端的响应,EXPIRED
表示已过期,STALE
表示命中缓存但后端服务器已损坏,UPDATING
表示正在更新,REVALIDATED
表示重新校验,HIT
表示已命中;
$upstream_status
:保存了上游服务器的响应状态码;