Nginx变量.md
ngx_http_core_module
ngx_http_core_module模块支持名称与Apache服务器变量匹配的嵌入式变量。 首先,这些是表示客户请求头字段的变量,例如$ http_user_agent,$ http_cookie等等。 还有其他变量:
变量 | 含义 |
---|---|
$arg_name | 请求行中的参数名称 |
$args | 请求行中的参数 |
$binary_remote_addr | 客户端地址为二进制形式,值的长度对于IPv4地址始终为4字节,对于IPv6地址为16字节 |
$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 | host name |
$http_name | 任意请求头字段; 变量名的最后一部分是字段名称转换为小写字母,破折号用下划线替换 |
$https | “on”如果连接在SSL模式下运行,否则为空字符串 |
$is_args | “?”如果请求行有参数,否则为空字符串 |
$limit_rate | 设置此变量启用响应速率限制; 请参阅limit_rate |
$msec | 当前时间(以秒为单位)与毫秒分辨率(1.3.9,1.2.6) |
$nginx_version | nginx version |
$pid | PID of the worker process |
$pipe | “p”如果请求是流水线的,“.”否则(1.3.12,1.2.7) |
$proxy_protocol_addr | 客户端地址从PROXY协议header,否则为空字符串(1.5.12)必须先通过在listen指令中设置proxy_protocol参数来启用PROXY协议。 |
$proxy_protocol_port | 客户端端口从PROXY协议头,否则为空字符串(1.11.0)必须先通过在listen指令中设置proxy_protocol参数来启用PROXY协议。 |
$query_string | same as $args |
$realpath_root | 对应于当前请求的根或别名指令的值的绝对路径名,所有符号链接解析为实际路径 |
$remote_addr | client address |
$remote_port | client port |
$remote_user | 用户名提供基本认证 |
$request | full original request line |
$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 | 文件路径,基于根或别名指令,以及请求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 | 任意响应头字段; 变量名的最后一部分是字段名称转换为小写字母,破折号用下划线替换 |
$server_addr | 接受请求的服务器的地址,计算此变量的值通常需要一次系统调用。 为了避免系统调用,listen指令必须指定地址并使用bind参数。 |
$server_name | 接受请求的服务器的名称 |
$server_port | 接受请求的服务器端口 |
$server_protocol | 请求协议,通常是“HTTP / 1.0”,“HTTP / 1.1”或“HTTP / 2.0” |
$status | response 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的值可以在请求处理期间改变,例如。 当进行内部重定向时,或当使用索引文件时。 |
#ngx_http_fastcgi_module
ngx_http_fastcgi_module模块支持嵌入式变量,可以使用fastcgi_param指令设置参数:
$fastcgi_script_name
请求URI,或者如果URI以斜杠结尾,请求URI带有由附加的fastcgi_index指令配置的索引文件名。 此变量可用于设置在PHP中确定脚本名称的SCRIPT_FILENAME和PATH_TRANSLATED参数。 例如,对于带有以下指令的“/ info /”请求
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
SCRIPT_FILENAME参数将等于“/home/www/scripts/php/info/index.php”。
当使用fastcgi_split_path_info指令时,$fastcgi_script_name变量等于指令的第一个捕获集的值。
$fastcgi_path_info
第二个捕获的值由fastcgi_split_path_info指令设置。 此变量可用于设置PATH_INFO参数。
ngx_http_gzip_module
$gzip_ratio
实现的压缩比,计算为原始和压缩响应大小之间的比率。
ngx_http_memcached_module
$memcached_key
定义用于从memcached服务器获取响应的键。
ngx_http_proxy_module
ngx_http_proxy_module模块支持嵌入式变量,可以使用proxy_set_header指令来组成头文件:
$proxy_host
proxy_pass指令中指定的代理服务器的名称和端口;
$proxy_port
proxy_pass指令中指定的代理服务器的端口或协议的默认端口;
$proxy_add_x_forwarded_for
“X-Forwarded-For”客户端请求头字段,其中附加了$ remote_addr变量,用逗号分隔。 如果客户请求头中没有“X-Forwarded-For”字段,$proxy_add_x_forwarded_for变量等于$remote_addr变量。
ngx_http_realip_module
$realip_remote_addr
保留原始客户端地址(1.9.7)
$realip_remote_port
保留原始客户端端口(1.11.0)
ngx_http_referer_module
$invalid_referer
空字符串,如果“Referer”请求头字段值被视为有效,否则为“1”。
ngx_http_secure_link_module
$secure_link
链接检查的状态。 具体值取决于所选的操作模式。
$secure_link_expires
请求中传递的链接的生存期; 意图仅在secure_link_md5指令中使用。
ngx_http_slice_module
$slice_range
当前切片范围以HTTP字节范围格式,例如,bytes = 0-1048575。
ngx_http_ssl_module
$ssl_cipher
返回用于已建立的SSL连接的密码字符串;
$ssl_ciphers
返回客户端支持的密码列表(1.11.7)。 已知密码以名称列出,未知以十六进制显示,例如:
AES128-SHA:AES256-SHA:0x00ff
仅当使用OpenSSL版本1.0.2或更高版本时,才完全支持该变量。 对于较旧版本,此变量仅可用于新会话,并仅列出已知密码。
$ssl_client_cert
以已建立的SSL连接的PEM格式返回客户端证书,每行除了第一个前面带有制表符字符; 这是为了在proxy_set_header指令中使用;
$ssl_client_fingerprint
返回已建立的SSL连接的客户端证书的SHA1指纹(1.7.1);
$ssl_client_i_dn
根据RFC 2253(1.11.6)返回已建立的SSL连接的客户端证书的“issuer DN”字符串;
$ssl_client_i_dn_legacy
返回已建立的SSL连接的客户端证书的“issuer DN”字符串;
在1.11.6版之前,变量名是$ ssl_client_i_dn。
$ssl_client_raw_cert
以已建立的SSL连接的PEM格式返回客户端证书;
$ssl_client_s_dn
根据RFC 2253(1.11.6)返回已建立的SSL连接的客户端证书的“subject DN”字符串;
$ssl_client_s_dn_legacy
返回已建立的SSL连接的客户端证书的“subject DN”字符串;
在1.11.6版之前,变量名是$ ssl_client_s_dn。
$ssl_client_serial
返回已建立的SSL连接的客户端证书的序列号;
$ssl_client_v_end
返回客户端证书的结束日期(1.11.7);
$ssl_client_v_remain
返回客户端证书到期的天数(1.11.7);
$ssl_client_v_start
返回客户端证书的开始日期(1.11.7);
$ssl_client_verify
返回客户端证书验证的结果:“SUCCESS”,“FAILED:reason”和“NONE”(如果证书不存在);
在1.11.7版之前,“FAILED”结果不包含原因字符串。
$ssl_curves
返回客户端支持的曲线列表(1.11.7)。 已知的曲线以名称列出,未知的以十六进制显示,例如:
0x001d:prime256v1:secp521r1:secp384r1
仅当使用OpenSSL版本1.0.2或更高版本时,才支持该变量。 对于旧版本,变量值将是一个空字符串。
该变量仅适用于新会话。
$ssl_protocol
返回已建立的SSL连接的协议;
$ssl_server_name
返回通过SNI请求的服务器名称(1.7.0);
$ssl_session_id
返回已建立的SSL连接的会话标识;
$ssl_session_reused
如果SSL会话被重用,则返回“r”,否则返回“。”,否则返回(1.5.11)。
ngx_http_stub_status_module
$connections_active
与活动连接值相同;
$connections_reading
与读数值相同;
$connections_writing
与写入值相同;
$connections_waiting
与等待值相同。
ngx_http_upstream_module
$upstream_addr
保留IP地址和端口或上游服务器的UNIX域套接字的路径。 如果在请求处理期间联系了多个服务器,则它们的地址由逗号分隔,例如。 “192.168.1.1:80,192.168.1.2:80,unix:/ tmp / sock”。 如果由“X-Accel-Redirect”或error_page发起的从一个服务器组到另一个服务器组的内部重定向发生,则来自不同组的服务器地址由冒号分隔。 “192.168.1.1:80,192.168.1.2:80,unix:/ tmp / sock:192.168.10.1:80,192.168.10.2:80”。
$upstream_bytes_received
从上游服务器接收的字节数(1.11.4)。 来自多个连接的值由逗号和冒号分隔,如$ upstream_addr变量中的地址。
$upstream_cache_status
保持访问响应缓存的状态(0.8.3)。 状态可以是“MISS”,“BYPASS”,“EXPIRED”,“STALE”,“UPDATING”,“REVALIDATED”或“HIT”。
$upstream_connect_time
保持与上游服务器建立连接的时间(1.9.1); 时间以秒为单位,以毫秒为单位。 在SSL的情况下,包括在握手上花费的时间。 几个连接的时间由逗号和冒号分隔,如$ upstream_addr变量中的地址。
$upstream_cookie_name
具有由上游服务器在“Set-Cookie”响应头字段(1.7.1)中发送的指定名称的cookie。 仅保存来自最后一个服务器的响应的cookie。
$upstream_header_time
保持从上游服务器接收响应头的时间(1.7.10); 时间以秒为单位,以毫秒为单位。 几个响应的时间由逗号和冒号分隔,如$ upstream_addr变量中的地址。
$upstream_http_name
保留服务器响应头字段。 例如,“Server”响应头字段可通过$ upstream_http_server变量使用。 将头字段名转换为变量名的规则与以“$ http_”开头的变量相同。 只有来自最后一个服务器的响应的头字段被保存。
$upstream_response_length
保持从上游服务器获得的响应的长度(0.7.27); 长度以字节为单位。 几个响应的长度由逗号和冒号分隔,如$ upstream_addr变量中的地址。
$upstream_response_time
保持接收来自上游服务器的响应所花费的时间; 时间以秒为单位,以毫秒为单位。 几个响应的时间由逗号和冒号分隔,如$ upstream_addr变量中的地址。
$upstream_status
保存从上游服务器获得的响应的状态码。 多个响应的状态代码由逗号和冒号分隔,如$ upstream_addr变量中的地址。
ngx_http_userid_module
$uid_got
Cookie名称和收到的客户标识符。
$uid_reset
如果变量设置为不为“0”的非空字符串,则客户机标识符将重置。 特殊值“log”另外导致关于重置标识符的消息输出到error_log。
$uid_set
Cookie名称和已发送的客户端标识符。