Nginx 中的很多参数可以使用内置的变量来设置,本文主要介绍一些常用的变量。
1、Nginx 配置文件中变量使用
http { ... log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; ... server { listen 8089; server_name localhost; location /abc { proxy_pass http://10.39.196.30:8080/abc; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ... } ...
在该配置文件中使用多个变量来定义日期格式(log_format),并使用变量来设置传递给代理服务器的请求头(proxy_set_header)。
2、常用变量说明
变量 | 说明 |
$arg_name | 表示请求行中的任意参数,name 为参数名称 |
$args | 表示请求行中的参数部分 |
$binary_remote_addr | 二进制形式表示的客户端地址 |
$body_bytes_sent | 发送到客户端的字节数,不包括响应头 |
$bytes_received | 接受到客户端的字节数 |
$bytes_sent | 发送到客户端的字节数 |
$connection | 连接序列号 |
$connection_requests | 当前连接的请求数量 |
$connection_time | 连接时间,单位为:ms |
$cookie_name | 表示任意 cookie,name 为 cookie 名称 |
$date_gmt | GMT 时间 |
$date_local | 本地时间 |
$host | 按照以下顺序获取主机信息:请求行中的主机名,或“Host”请求头字段中的主机名,或与请求匹配的服务器名。 |
$hostname | 主机名 |
$http_name | 表示任意请求头;name为请求头名称,其中破折号被下划线替换并转换为小写;如:$http_user_agent,$http_x_forwarded_for |
$proxy_add_x_forwarded_for | 将 $remote_addr 的值附加到“X−Forwarded−For”客户端请求头中,由逗号分隔。如果客户端请求头中不存在“X−Forwarded−For”,则 $proxy_add_x_forwarded_for 等于 $remote_addr 。 |
$proxy_host | 代理服务器的地址和端口 |
$proxy_port | 代理服务器的端口 |
$query_string | 同$args |
$remote_addr | 客户端地址 |
$remote_port | 客户端端口 |
$remote_user | Basic 身份验证中提供的用户名 |
$request | 完整请求行 |
$request_body | 请求体 |
$request_body_file | 保存请求体的临时文件 |
$request_length | 请求长度(包括请求行、头部和请求体) |
$request_method | 请求方法 |
$request_time | 请求处理时间,单位为:ms |
$request_uri | 完整请求行 |
$scheme | 请求协议,http 或 https |
$server_addr | 接受请求的服务器地址 |
$server_name | 接受请求的服务器名称 |
$server_port | 接受请求的服务器端口 |
$server_protocol | 请求协议,通常为 HTTP/1.0、HTTP/1.1 或 HTTP/2.0 |
$ssl_cipher | 建立 SSL 连接所使用的加密套件名称 |
$ssl_ciphers | 客户端支持的加密套件列表 |
$ssl_client_escaped_cert | 客户端 PEM 格式的证书 |
$ssl_protocol | 建立 SSL 连接的协议 |
$status | 响应状态码 |
$time_iso8601 | ISO 8601 标准格式的本地时间 |
$time_local | Common Log 格式的本地时间 |
$upstream_addr | upstream 服务器的 ip 和端口 |
$upstream_bytes_received | 从 upstream 服务器接收的字节数 |
$upstream_bytes_sent | 发送给 upstream 服务器的字节数 |
$upstream_http_name | 表示 upstream 服务器任意响应头,name为响应头名称,其中破折号被下划线替换并转换为小写 |
$upstream_response_length | upstream 服务器的响应长度,单位为:字节 |
$upstream_response_time | upstream 服务器的响应时间,单位为:秒 |
$upstream_status | upstream 服务器的响应状态码 |
$uri | 请求 uri |
参考:https://nginx.org/en/docs/varindex.html。