Nginx 变量
变量是编程语言的自然组成部分。这些只是在 Perl、C/C++、Bourne shell、Perl 等命令式语言中保存各种值的容器。值可以是像"hello world"这样的字符串,像"3.14"这样的数字,甚至是复杂的东西,比如引用这些语言中的数组或哈希表。
然而,对于 Nginx 配置语言,变量可以保存只有一种类型的值,即字符串。但是有一个有趣的例外: 第 3 rd 方模块 ngx_array_var 扩展了 Nginx 变量以包含数组,但它是通过在幕后将 C 指针编码为二进制字符串值来实现的。
变量语法
考虑我们的 Nginx.conf 配置文件,其中包含以下行:
set $a "hello world";
在这里,我们通过来自标准 Nginx_rewrite 模块的 set 配置指令为变量"$a"赋值。而这里我们将字符串值"hello world"赋给了"$a"。
从上面的例子中,我们可以看到Nginx变量名前面有一个美元符号($)。因此,我们可以说,每当我们想在配置文件中添加对 Nginx 变量的引用时,我们必须添加一个美元($) 前缀。
让我们看另一个简单的例子,
set $a hello; set $b "$a, $a";
从上面的例子可以看出,变量$a是用来构造变量$b的值的。所以这两个指令执行完毕后,$a 的值为"hello",$b 为"hello, hello"。这种技术称为"变量插值"。
让我们看看 Nginx 中的变量列表:
变量 | 说明 |
$ancient_browser | 如果浏览器被识别为古浏览器,则此变量用于等于古浏览器值指令设置的值。 |
$arg_name | 请求行中参数的名称。 |
$args | 请求行上的参数列表。 |
$binary_remote_addr(ngx_http_core_module) | 二进制形式的客户端地址。值的长度对于 IP4 地址始终为 4 个字节,对于 IPv6 地址始终为 16 个字节。 |
$binary_remote_addr(ngx_stream_core_module) | 二进制形式的客户端地址。值的长度对于 IP4 地址始终为 4 个字节,对于 IPv6 地址始终为 16 个字节。 |
$body_bytes_sent | 发送给客户端的字节数,不包括响应头。 |
$bytes_received | 从客户端接收的字节数。 |
$bytes_sent(ngx_http_core_module) | 发送给客户端的字节数。 |
$bytes_sent(ngx_http_log_module) | 发送给客户端的字节数。 |
$bytes_sent(ngx_stream_core_module) | 发送给客户端的字节数。 |
$connection(ngx_http_core_module) | 连接序列号 |
$connection(ngx_http_log_module) | 连接序列号 |
$connection(ngx_stream_core_module) | 连接序列号 |
$connection_requests(ngx_http_core_module) | 当前通过连接发出的请求数。 |
$connection_requests(ngx_http_log_module) | 当前通过连接发出的请求数。 |
$connections_active | 与活动连接值相同 |
$connections_reading | 同阅读值 |
$connections_waiting | 与等待值相同 |
$connections_writing | 与写入值相同。 |
$content_length | "内容长度"请求头域。 |
$content_type | "内容类型"请求头域 |
$cookie_name | cookie 的名称 |
$date_gmt | GMT(格林威治标准时间)的当前时间。要设置格式,请使用带有 timefmt 参数的 config 命令。 |
$date_local | 本地时区的当前时间。要设置格式,请使用带有 timefmt 参数的 config 命令。 |
$document_root | 当前请求的根或别名指令的值。 |
$document_uri | 与 $uri 相同。 |
$fastcgi_path_info | 当使用 fastcgi_split_path_info 指令时,$fastcgi_script_name 变量等于指令设置的第一个捕获的值。以及由 fastcgi_split_path_info 指令设置的第二次捕获的值。此变量用于设置 PATH_INFO 参数。 |
$fastcgi_script_name | 请求 URI(统一资源标识符),或者,如果 URI 以斜杠结尾,则请求 URI 并附加由 fastcgi_index 指令配置的索引文件名。 |
$geoip_area_code(ngx_http_geoip_module) | 电话区号(仅限美国)。此变量可能包含一些过时的信息,因为相应的数据库字段已被弃用。 |
$geoip_area_code(ngx_stream_geoip_module) | 电话区号(仅限美国)。此变量可能包含过时的信息,因为相应的数据库字段已被弃用。 |
$geoip_city(ngx_http_geoip_module) | 城市名称,例如"华盛顿"、"莫斯科"。 |
$geoip_city(ngx_stream_geoip_module) | 城市名称,例如"华盛顿"、"莫斯科"。 |
$geoip_city_continent_code(ngx_http_geoip_module) | 两个字母的大陆代码。例如,"NA"、"EU"。 |
$geoip_city_continent_code(ngx_stream_geoip_module) | 两个字母的大陆代码。例如,"NA"、"EU"。 |
$geoip_city_country_code(ngx_http_geoip_module) | 两个字母的大陆代码。例如,"NA"、"EU"。 |
$geoip_city_country_code(ngx_http_geoip_module) | 两个字母的国家/地区代码。例如,"RU"、"US"。 |
$geoip_city_country_code(ngx_stream_geoip_module) | 两个字母的国家/地区代码。例如,"RU"、"US"。 |
$geoip_city_country_code3(ngx_http_geoip_module) | 三个字母的国家/地区代码。例如,"RUS"、"USA"。 |
$geoip_city_country_code3(ngx_stream_geoip_module) | 三个字母的国家/地区代码。例如,"RUS"、"USA"。 |
$geoip_city_country_name(ngx_http_geoip_module) | 国家名称。例如,"印度"、"美国"。 |
$geoip_city_country_name(ngx_stream_geoip_module) | 国家名称。例如,"印度"、"美国"。 |
$geoip_country_code(ngx_http_geoip_module) | 两个字母的国家/地区代码。例如,"RU"、"US"。 |
$geoip_country_code(ngx_stream_geoip_module) | 两个字母的国家/地区代码。例如,"RU"、"US"。 |
$geoip_country_code3(ngx_http_geoip_module) | 三个字母的国家/地区代码。例如,"RUS"、"USA"。 |
$geoip_country_code3(ngx_stream_geoip_module) | 三个字母的国家/地区代码。例如,"RUS"、"USA"。 |
$geoip_country_name(ngx_http_geoip_module) | 国家名称。例如,"印度"、"美国"。 |
$geoip_country_name(ngx_stream_geoip_module) | 国家名称。例如,"印度"、"美国"。 |
$geoip_city_country_name(ngx_stream_geoip_module) | 国家名称。例如,"印度"、"美国"。 |
$geoip_country_code(ngx_http_geoip_module) | 两个字母的国家/地区代码。例如,"RU"、"US"。 |
$geoip_country_code(ngx_stream_geoip_module) | 两个字母的国家/地区代码。例如,"RU"、"US"。 |
$geoip_country_code3(ngx_http_geoip_module) | 三个字母的国家/地区代码。例如,"RUS"、"USA"。 |
$geoip_country_code3(ngx_stream_geoip_module) | 三个字母的国家/地区代码。例如,"RUS"、"USA"。 |
$geoip_country_name(ngx_http_geoip_module) | 国家名称。例如,"印度"、"美国"。 |
$geoip_country_name(ngx_stream_geoip_module) | 国家名称。例如,"印度"、"美国"。 |
$geoip_dma_code(ngx_http_geoip_module) | 根据 Google AdWords API 中的地理定位,这是美国的 DMA(指定市场区域)代码或都市代码。 |
$geoip_dma_code(ngx_stream_geoip_module) | 根据 Google AdWords API 中的地理定位,这是美国的 DMA(指定市场区域)代码或都市代码。 |
$geoip_latitude(ngx_http_geoip_module) | 纬度。 |
$geoip_latitude(ngx_stream_geoip_module) | 纬度。 |
$geoip_longitude(ngx_http_geoip_module) | 经度 |
$geoip_longitude(ngx_stream_geoip_module) | 经度 |
$geoip_org(ngx_http_geoip_module) | 组织名称。例如"加州大学"。 |
$geoip_org(ngx_stream_geoip_module) | 组织名称。例如"加州大学"。 |
$geoip_postal_code(ngx_http_geoip_module) | 邮政编码。 |
$geoip_postal_code(ngx_stream_geoip_module) | 邮政编码。 |
$geoip_region(ngx_http_geoip_module) | 地区名称(省、地区、州、联邦土地、领土),例如,莫斯科市,DC。 |
$geoip_region(ngx_stream_geoip_module) | 地区名称(省、地区、州、联邦土地、领土),例如,莫斯科市,DC。 |
$geoip_region_name(ngx_http_geoip_module) | 国家/地区名称((省、地区、州、联邦土地、领土),例如"莫斯科市"、"哥伦比亚特区"。 |
$geoip_region_name(ngx_stream_geoip_module) | 国家/地区名称((省、地区、州、联邦土地、领土),例如"莫斯科市"、"哥伦比亚特区"。 |
$gzip_ratio | 它是实现的压缩率,计算为原始响应大小和压缩响应大小之间的比率。 |
$host | 请求行中的主机名、主机请求头字段中的主机名或与请求匹配的服务器名。 |
$hostname(ngx_http_core_module) | 主机名。 |
$hostname(ngx_stream_core_module) | 主机名。 |
$http2 | 协商协议标识符: h2 表示基于 TLS 的 HTTP/2,h2c 表示基于明文 TCP 的 HTTP/2,否则为空字符串。 |
$http_name | 它是任意请求头字段: 变量名的最后一部分是字段名,转换为小写,破折号由下划线代替。 |
$https | 如果连接在 SSL 模式下运行,则为"on",否则为空字符串。 |
$invalid_referer | 如果认为"Referer"请求头字段值有效,则字符串为空,否则为 1、 |
$is_args | "?"如果请求行有参数,否则为空字符串。 |
$jwt_claim_name | 它返回指定 JWT(JSON Web Token)声明的值。 |
$jwt_header_name | 返回指定 JOSE(JavaScript 对象签名和加密)标头的值。 |
$limit_rate | 设置此变量可启用响应率限制。 |
$memcached_key | 定义从 memcached 服务器获取响应的键。 |
$modern_browser | 等于由 modern_browser_value 指令设置的值,如果浏览器被识别为现代浏览器。 |
$msec(ngx_http_core_module) | 以毫秒为单位的当前时间,分辨率为 ms(毫秒)。 |
$msec(ngx_http_log_module) | 以秒为单位的时间,日志写入时的毫秒精度。 |
$msec(ngx_stream_core_module) | 以毫秒为单位的当前时间,分辨率为 ms(毫秒)。 |
$msie | 如果浏览器被识别为任何版本的 MSIE(Microsoft Internet Explorer),则等于 1、 |
$Nginx_version(ngx_http_core_module) | 显示Nginx版本 |
$Nginx_version(ngx_stream_core_module) | Nginx 版本。 |
$pid(ngx_http_core_module) | 工作进程的PID(进程ID)。 |
$pid(ngx_stream_core_module) | 工作进程的PID(进程ID)。 |
$pipe(ngx_http_core_module) | "p" 如果请求被流水线化,"."否则。 |
$pipe(ngx_http_log_module) | "p" 如果请求被流水线化,"."否则。 |
$protocol | 用于与客户端通信的协议: UDP 或 TCP。 |
$proxy_add_x_forwarded_for | "X-Forwarded-For"客户端请求标头字段,附加了 $remote_addr 变量,用逗号分隔。如果客户端请求标头中不存在"X-Forwarded-For"字段,则 $proxy_add_x_forwarded_for 变量等于 $remote_addr 变量。 |
$proxy_host | proxy_pass 指令中指定的代理服务器的名称和端口。 |
$proxy_port | proxy_pass 指令中指定的代理服务器端口,或协议的默认端口。 |
$proxy_protocol_addr(ngx_http_core_module) | 来自代理协议头的客户端地址,否则为空字符串。必须先启用 PROXY 协议。这可以通过在 listen 指令中设置代理协议参数来完成。 |
$proxy_protocol_addr(ngx_stream_core_module) | 来自代理协议头的客户端地址,否则为空字符串。必须先启用 PROXY 协议。这可以通过在 listen 指令中设置代理协议参数来完成。 |
$proxy_protocol_port(ngx_http_core_module) | 来自代理协议头的客户端地址,否则为空字符串。必须先启用 PROXY 协议。这可以通过在 listen 指令中设置代理协议参数来完成。 |
$proxy_protocol_port(ngx_stream_core_module) | 来自代理协议头的客户端地址,否则为空字符串。必须先启用 PROXY 协议。这可以通过在 listen 指令中设置代理协议参数来完成。 |
$query_string | 同$args |
$realip_remote_addr(ngx_http_realip_module) | 用于保留原始客户端地址。 |
$realip_remote_addr(ngx_stream_realip_module) | 用于保留原始客户端地址。 |
$realip_remote_port(ngx_http_realip_module) | 用于保留原始客户端地址。 |
$realip_remote_port(ngx_stream_realip_module) | 用于保留原始客户端地址。 |
$realpath_root | 与当前请求的别名或根指令值对应的绝对路径名,所有符号链接都解析为真实路径。 |
$remote_addr(ngx_http_core_module) | 客户地址 |
$remote_addr(ngx_stream_core_module) | 客户地址 |
$remote_port(ngx_http_core_module) | 客户端端口 |
$remote_port(ngx_stream_core_module) | 客户端端口 |
$remote_user | 基本身份验证提供的用户名。 |
$request | 完整的原始请求行。 |
$request_body | 当请求正文被读取到 memory_buffer 时,该变量的值在由 proxy_pass 和 scgi_pass 指令处理的位置中可用。 |
$request_body_file | 带有请求正文的临时文件的名称。 |
$request_completion | 如果请求已完成,则值为"OK",否则为空字符串。 |
$request_filename | 当前请求的文件路径,基于根或别名指令,以及请求 URI。 |
$request_id | 由 16 个随机字节生成的唯一请求标识符,以十六进制表示。 |
$request_length(ngx_http_core_module) | 请求长度(请求行、请求正文和标头)。 |
$request_length(ngx_http_log_module) | 请求长度(请求行、请求正文和标头)。 |
$request_method | 请求方法。通常是"GET"或"POST"。 |
$request_time(ngx_http_core_module) | 以毫秒为单位的请求处理时间;从客户端读取第一个字节以来经过的时间。 |
$request_time(ngx_http_log_module) | 以毫秒为单位的请求处理时间;从客户端读取第一个字节到最后一个字节发送到客户端后写入日志之间经过的时间。 |
$request_uri | 带参数的完整原始请求 URI(统一资源标识符)。 |
$scheme | 请求方案可能是 http 或 https |
$secure_link | 显示链接检查的状态,该值取决于所选的操作模式。 |
$secure_link_expires | 请求中传递的链接的生命周期; |
$sent_http_name | 是任意响应头域;变量名的最后一部分是转换为小写的字段名称,短划线替换为下划线。 |
$sent_trailer_name | 响应结束时发送的任意字段;变量名的最后一部分是转换为小写的字段名称,短划线替换为下划线。 |
$server_addr(ngx_http_core_module) | 接受请求的服务器地址。计算这个变量的值需要一个系统调用。 |
$server_addr(ngx_stream_core_module) | 接受请求的服务器地址。计算这个变量的值需要一个系统调用。 |
$server_name | 接受请求的服务器名称。 |
$server_port(ngx_http_core_module) | 接受请求的服务器端口。 |
$server_port(ngx_stream_core_module) | 接受连接的服务器端口。 |
$server_protocol | 是一个请求协议,通常是HTTP/1.0、HTTP/1.1或HTTP/2.0。 |
$session_log_binary_id | 二进制形式的当前会话ID。 |
$session_log_id | 当前会话 ID。 |
$session_time | 以毫秒为单位的会话持续时间。 |
$slice_range | HTTP 字节范围格式的当前切片范围。例如。字节=0-1048575 |
$spdy | SPDY(发音为快速)连接的 SPDY 协议版本,否则为空字符串。 |
$spdy_request_priority | 请求 SPDY(发音为快速)连接的优先级或其他情况下的空字符串。 |
$ssl_cipher(ngx_http_ssl_module) | 返回用于已建立的 SSL(安全套接字层)连接的密码字符串。 |
$ssl_cipher(ngx_stream_ssl_module) | 返回用于已建立的 SSL(安全套接字层)连接的密码字符串。 |
$ssl_ciphers(ngx_http_ssl_module) | 它将返回客户端支持的密码列表。这里,已知密码按名称列出,未知密码以十六进制显示,例如,AES128-SHA:AES256-SHA:0x00ff |
$ssl_ciphers(ngx_stream_ssl_module) | 它将返回客户端支持的密码列表。这里,已知密码按名称列出,未知密码以十六进制显示,例如,AES128-SHA:AES256-SHA:0x00ff |
$ssl_client_cert(ngx_http_ssl_module) | 它将返回 PEM(隐私增强邮件)中建立的 SSL 连接的客户端证书,除了 1st 之外的每一行都带有制表符。 |
$ssl_client_cert(ngx_stream_ssl_module) | 它将返回 PEM(隐私增强邮件)中建立的 SSL 连接的客户端证书,除了 1st 之外的每一行都带有制表符。 |
$ssl_client_escaped_cert | 它将在 PEM(隐私增强邮件)中返回客户端证书以建立 SSL 连接 |
$ssl_client_fingerprint(ngx_http_ssl_module) | 它将为已建立的 SSL 连接返回客户端证书的 SHA1(安全哈希算法)指纹。 |
$ssl_client_fingerprint(ngx_stream_ssl_module) | 它将为已建立的 SSL 连接返回客户端证书的 SHA1(安全哈希算法)指纹。 |
$ssl_client_i_dn(ngx_http_ssl_module) | 根据 RFC 2253 返回已建立 SSL 连接的客户端证书的"颁发者 DN"(其中 DN 是专有名称)字符串。 |
$ssl_client_i_dn(ngx_stream_ssl_module) | 根据 RFC 2253 返回已建立 SSL 连接的客户端证书的"颁发者 DN"(其中 DN 是专有名称)字符串。 |
$ssl_client_i_dn_legacy | 返回已建立 SSL 连接的客户端证书的"颁发者 DN"(其中 DN 是专有名称)字符串。 |
$ssl_client_raw_cert(ngx_http_ssl_module) | 它将为已建立的 SSL 连接返回 PEM(隐私增强邮件)格式的客户端证书。 |
$ssl_client_raw_cert(ngx_stream_ssl_module) | 它将为已建立的 SSL 连接返回 PEM(隐私增强邮件)格式的客户端证书。 |
$ssl_client_s_dn(ngx_http_ssl_module) | 返回根据 RFC2253 建立的 SSL 连接的客户端证书的"主题 DN"(其中 DN 是专有名称)字符串。 |
$ssl_client_s_dn(ngx_stream_ssl_module) | 根据 RFC2253 返回已建立 SSL 连接的客户端证书的"主题 DN"(其中 DN 是专有名称)字符串。 |
$ssl_client_s_dn_legacy | 返回已建立的 SSL 连接的客户端证书的"主题 DN"(其中 DN 是专有名称)字符串。 |
$ssl_client_serial(ngx_http_ssl_module) | 它将返回已建立的 SSL 连接的客户端证书的序列号。 |
$ssl_client_serial(ngx_stream_ssl_module) | 它将返回已建立的 SSL 连接的客户端证书的序列号。 |
$ssl_client_v_end(ngx_http_ssl_module) | 它将返回客户端证书的结束日期。 |
$ssl_client_v_end(ngx_stream_ssl_module) | 它将返回客户端证书的结束日期。 |
$ssl_client_v_remain(ngx_http_ssl_module) | 它将返回客户端证书到期前的天数。 |
$ssl_client_v_remain(ngx_stream_ssl_module) | 它将返回客户端证书到期前的天数。 |
$ssl_client_v_start(ngx_http_ssl_module) | 它将返回客户端证书的开始日期。 |
$ssl_client_v_start(ngx_stream_ssl_module) | 它将返回客户端证书的开始日期。 |
$ssl_client_verify(ngx_http_ssl_module) | 如果证书不存在,它将返回客户端证书验证的结果: "SUCCESS"、"FAILD:reason"和"NONE"。 |
$ssl_client_verify(ngx_stream_ssl_module) | 如果证书不存在,它将返回客户端证书验证的结果: "SUCCESS"、"FAILD:reason"和"NONE"。 |
$ssl_curves(ngx_http_ssl_module) | 返回客户端支持的曲线列表。所有已知曲线均按名称列出,未知以十六进制表示,例如: 0x001d:prime256v1:secp521r1:secp384r1 |
$ssl_curves(ngx_stream_ssl_module) | 返回客户端支持的曲线列表。所有已知曲线均按名称列出,未知以十六进制表示,例如: 0x001d:prime256v1:secp521r1:secp384r1 |
$ssl_early_data | 如果使用 TLS 1.3 早期数据并且握手未完成则返回 1,否则返回空。 |
$ssl_preread_alpn_protocols | 返回客户端通过ALPN发布的协议列表,值之间用逗号分隔。 |
$ssl_preread_protocol | 客户端支持的最高 SSL(安全套接字层)协议版本。 |
$ssl_preread_server_name | 返回通过 SNI(Sever Name Indication)请求的服务器名称。 |
$ssl_protocol(ngx_http_ssl_module) | 它将返回已建立的 SSL 连接的协议。 |
$ssl_protocol(ngx_stream_ssl_module) | 它将返回已建立的 SSL 连接的协议。 |
$ssl_server_name(ngx_http_ssl_module) | 返回通过 SNI(Server Name Indication)请求的服务器名称。 |
$ssl_server_name(ngx_stream_ssl_module) | 返回通过 SNI(Server Name Indication)请求的服务器名称。 |
$ssl_session_id(ngx_http_ssl_module) | 它将返回已建立的 SSL 连接的会话标识符。 |
$ssl_session_id(ngx_stream_ssl_module) | 它将返回已建立的 SSL 连接的会话标识符。 |
$ssl_session_reused(ngx_http_ssl_module) | 如果 SSL 会话被重用,则返回"r"或"。"否则。 |
$ssl_session_reused(ngx_stream_ssl_module) | 如果 SSL 会话被重用,则返回"r"或"。"否则。 |
$status(ngx_http_core_module) | 响应状态。 |
$status(ngx_http_log_module) | 响应状态。 |
$status(ngx_stream_core_module) | 会话状态,可以是以下之一: 200: 会话成功完成。 400: 无法解析客户端数据。 403: 禁止访问。 500内部服务器错误。 502错误的网关。 503: 服务不可用。 |
$tcpinfo_rtt | 显示有关客户端 TCP 连接的信息,在支持 TCP_INFO 套接字选项的系统上可用。 |
$tcpinfo_rttvar | 显示有关客户端 TCP 连接的信息,在支持 TCP_INFO 套接字选项的系统上可用。 |
$tcpinfo_snd_cwnd | 显示有关客户端 TCP 连接的信息,在支持 TCP_INFO 套接字选项的系统上可用。 |
$tcpinfo_rcv_space | 显示有关客户端 TCP 连接的信息,在支持 TCP_INFO 套接字选项的系统上可用。 |
$time_iso8601(ngx_http_core_module) | 以 ISO 8601 标准格式显示当地时间。 |
$time_iso8601(ngx_http_log_module) | 以 ISO 8601 标准格式显示当地时间。 |
$time_iso8601(ngx_stream_core_module) | 以 ISO 8601 标准格式显示当地时间。 |
$time_local(ngx_http_core_module) | 以普通日志格式显示当地时间 |
$time_local(ngx_http_log_module) | 以普通日志格式显示当地时间。 |
$time_local(ngx_stream_core_module) | 以普通日志格式显示当地时间。 |
$uid_got | cookie 的名称和接收到的客户端标识符。 |
$uid_reset | 如果变量设置为 ?non-empty' 字符串意味着不是 ?0',那么客户端标识符将被重置。特殊值 log 还导致将有关重置标识符的消息输出到 error_log。 |
$uid_set | cookie 的名称和发送的客户端标识符。 |
$upstream_addr(ngx_http_upstream_module) | 它将保留 IP 地址和端口,或上游服务器的 UNIX 域套接字的路径。如果在请求处理期间联系了多个服务器,则它们的地址用逗号分隔。 |
$upstream_addr(ngx_stream_upstream_module) | 它将保留 IP 地址和端口,或上游服务器的 UNIX 域套接字的路径。如果在请求处理期间联系了多个服务器,则它们的地址用逗号分隔。 |
$upstream_bytes_received(ngx_http_upstream_module) | 从上游流服务器接收的字节数。来自多个连接的值由逗号(,) 和冒号(:) 分隔,就像 $upstream_addr 变量中的地址一样。 |
$upstream_bytes_received(ngx_stream_upstream_module) | 从上游流服务器接收的字节数。来自多个连接的值由逗号(,) 和冒号(:) 分隔,就像 $upstream_addr 变量中的地址一样。 |
$upstream_bytes_sent(ngx_http_upstream_module) | 发送到上游流服务器的字节数。来自多个连接的值由逗号(,) 和冒号(:) 分隔,就像 $upstream_addr 变量中的地址一样。 |
$upstream_bytes_sent(ngx_stream_upstream_module) | 发送到上游流服务器的字节数。来自多个连接的值由逗号(,) 和冒号(:) 分隔,就像 $upstream_addr 变量中的地址一样。 |
$upstream_cache_status | 它将保持访问响应缓存的状态。 状态可以是"BYPASS"、"MISS"、"EXPIRED"、 "STALE"、"REVALIDATED"、"UPDATING"或"HIT"。 |
$upstream_connect_time(ngx_http_upstream_module) | 用于保持与upstr建立连接所花费的时间eam 服务器(1.9.1);时间以毫秒为单位,以毫秒为单位。在 SSL 的情况下,增加了握手所花费的时间。多个连接的时间用逗号(,) 和冒号(:) 分隔,就像 $upstream_addr 变量中的地址一样。 |
$upstream_connect_time(ngx_stream_upstream_module) | 保持连接上游服务器的时间;时间以秒为单位,精度为毫秒。多个连接的时间用逗号(,)分隔,如 $upstream_addr 变量中的地址。 |
$upstream_cookie_name | 上游服务器在 Set-Cookie 响应头字段中发送的具有定义名称的 Cookie。仅保存来自最后一个服务器响应的 cookie。 |
$upstream_first_byte_time | 接收第一个数据字节的时间。时间以秒为单位,分辨率为毫秒。多个连接的时间用逗号(,)分隔,如 $upstream_addr 变量中的地址。 |
$upstream_header_time | 它用于保持从上游服务器接收标头所花费的时间。多个连接的时间用逗号(,) 和冒号(:) 分隔,就像 $upstream_addr 变量中的地址一样。 |
$upstream_http_name | 保留服务器响应头字段。 |
$upstream_queue_time | 用于保持请求在上游队列中花费的时间;时间以秒为单位,精度为毫秒。多个连接的时间用逗号(,) 和冒号(:) 分隔,就像 $upstream_addr 变量中的地址一样。 |
$upstream_response_length | 用于保持从上游服务器获取的响应的长度。长度以字节为单位。多个响应的长度用逗号(,) 和冒号(:) 分隔,就像 $upstream_addr 变量中的地址一样。 |
$upstream_response_time | 用于保持从上游服务器接收响应所花费的时间;时间以秒为单位,精度为毫秒。多个连接的时间用逗号(,) 和冒号(:) 分隔,就像 $upstream_addr 变量中的地址一样。 |
$upstream_session_time | 会话持续时间(以秒为单位),分辨率为毫秒。多个连接的时间用逗号(,)分隔,如 $upstream_addr 变量中的地址。 |
$upstream_status | 用于保存从上游服务器获取的响应的状态码。多个响应的状态代码由逗号(,) 和冒号(:) 分隔,类似于 $upstream_addr 变量中的地址。如果无法选择服务器,则该变量会保留 502(Bad Gateway)状态代码。 |
$upstream_trailer_name | 用于保留从上游服务器获取的响应末尾的字段。 |
$uri | 请求中的当前 URI,标准化。我们可以在请求处理期间更改 $uri 的值,例如进行内部重定向或使用索引文件时。 |
下一章:Nginx指令和上下文
默认情况下,Nginx配置文件可以位于:/etc/Nginx/Nginx.conf,/usr/local/etc/Nginx/Nginx.conf, 或者/usr/local/Nginx/conf/Nginx.con ...