Nginx 内置变量参考
官方文档:https://nginx.org/en/docs/http/ngx_http_core_module.html#variables 这些变量可以通过
$var在配置中使用,在 OpenResty 中可用ngx.var.<name>访问。
1 请求头相关
ngx_http_core_module 支持嵌入变量,命名与 Apache Server 的变量一致。首先是代表客户端请求头字段的变量:$http_user_agent、$http_cookie 等。
$http_name—— 任意请求头字段:变量名的最后部分为字段名转小写、-转_后的结果。例如字段X-Real-IP⇒$http_x_real_ip。
2 URL 与参数相关
| 变量 | 含义 |
|---|---|
$arg_name |
请求行中的参数(?name=...) |
$args |
请求行中的参数串 |
$query_string |
同 $args |
$request_uri |
完整的原始请求 URI(带参数) |
$uri |
当前请求的 URI(已规范化) |
$document_uri |
同 $uri |
$document_root |
当前请求对应的 root 或 alias 指令的值 |
$realpath_root |
$document_root 的绝对路径(符号链接已解析) |
$is_args |
请求行带参数时为 ?,否则为空字符串 |
$request |
完整的原始请求行 |
$request_method |
请求方法,通常为 GET 或 POST |
$request_filename |
基于 root/alias 与请求 URI 计算出的文件路径 |
$scheme |
请求协议,http 或 https |
3 客户端相关
| 变量 | 含义 |
|---|---|
$remote_addr |
客户端 IP |
$remote_port |
客户端端口 |
$binary_remote_addr |
客户端地址的二进制形式(IPv4 固定 4 字节,IPv6 固定 16 字节) |
$remote_user |
Basic 认证提供的用户名 |
$proxy_protocol_addr |
PROXY 协议头中的客户端地址(需在 listen 开启 proxy_protocol) |
$proxy_protocol_port |
PROXY 协议头中的客户端端口 |
$proxy_protocol_server_addr |
PROXY 协议头中的服务端地址 |
$proxy_protocol_server_port |
PROXY 协议头中的服务端端口 |
4 服务器相关
| 变量 | 含义 |
|---|---|
$server_addr |
接受请求的服务器地址(通常需一次系统调用获得) |
$server_name |
接受请求的服务器名 |
$server_port |
接受请求的服务器端口 |
$server_protocol |
请求协议,通常为 HTTP/1.0、HTTP/1.1 或 HTTP/2.0 |
$host |
依次取:请求行的 host 名 → Host 请求头 → 匹配请求的 server 名 |
$hostname |
主机名 |
$pid |
worker 进程 PID |
$nginx_version |
nginx 版本号 |
$https |
SSL 模式下为 on,否则为空字符串 |
$scheme |
请求协议,http 或 https |
5 请求处理相关信息
| 变量 | 含义 |
|---|---|
$content_length |
Content-Length 请求头字段 |
$content_type |
Content-Type 请求头字段 |
$cookies($cookie_name) |
指定名称的 cookie |
$request_body |
请求体(在 proxy_pass/fastcgi_pass 等且请求体被读入内存缓冲时可用) |
$request_body_file |
请求体临时文件名 |
$request_completion |
请求完成时为 OK,否则为空 |
$request_id |
由 16 个随机字节生成的唯一请求标识(十六进制) |
$request_length |
请求长度(请求行 + 请求头 + 请求体) |
$request_time |
请求处理时间(秒,毫秒精度),从读到客户端第一个字节起算 |
$status |
响应状态码 |
6 响应相关
$sent_http_name—— 任意的响应头字段;变量名最后一段为字段名转小写、-转_。$sent_trailer_name—— 响应末尾发送的任意 trailer 字段(1.13.2+)。$body_bytes_sent—— 发送给客户端的字节数(不含响应头),兼容 Apache 的%B。$bytes_sent—— 发送给客户端的字节数(含响应头)。
7 时间与限速
$msec—— 当前时间,秒(毫秒精度)。$time_iso8601—— 本地时间 ISO 8601 格式。$time_local—— 本地时间,Common Log Format。$limit_rate—— 设置该变量可启用响应限速(等价于limit_rate指令)。
8 TCP 连接信息
$connection—— 连接序号。$connection_requests—— 当前连接上已处理的请求数。$pipe—— 请求为 pipelined 时为p,否则为.。$tcpinfo_rtt、$tcpinfo_rttvar、$tcpinfo_snd_cwnd、$tcpinfo_rcv_space—— 客户端 TCP 连接信息(系统支持 TCP_INFO 时可用)。
9 在 Lua 中访问
OpenResty 中所有内置变量都可以通过 ngx.var.<name> 或 ngx.var["<name>"] 读取:
ngx.say(ngx.var.remote_addr)
ngx.say(ngx.var["cookie_token"])
ngx.say(ngx.var.request_method)
阅读 —
·
全站 —