Nginx 变量

变量是编程语言的自然组成部分。变量是在 Perl、C/C++、Bourne shell、Perl 等语言中保存各种值的容器。值可以是像“hello world”这样的字符串,像 3.14 这样的数字,甚至是复杂的东西,比如在这些语言中对数组或哈希表的引用。

然而,对于 Nginx 配置语言,变量只能保存一种类型的值,即字符串。但有一个有趣的例外:第三方模块 ngx_array_var 扩展的 Nginx 变量包含数组。

变量语法

假设我们的 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 如果浏览器被识别为古浏览器,则此变量用于等于由 ancient_browser_value 指令设置的值。
$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 饼干的名字
$date_gmt GMT(格林威治标准时间)的当前时间。要设置格式,请使用带有timefmt参数的config命令。
$date_local 本地时区的当前时间。要设置格式,请使用带有timefmt参数的config命令。
$document_root 当前请求的 root 或 alias 指令的值。
$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”、“美国”。
$geoip_city_country_code (ngx_stream_geoip_module) 两个字母的国家/地区代码。例如,“RU”、“美国”。
$geoip_city_country_code3 (ngx_http_geoip_module) 三个字母的国家/地区代码。例如,“俄罗斯”、“美国”。
$geoip_city_country_code3 (ngx_stream_geoip_module) 三个字母的国家/地区代码。例如,“俄罗斯”、“美国”。
$geoip_city_country_name (ngx_http_geoip_module) 国家名称。例如,“印度”、“美国”。
$geoip_city_country_name (ngx_stream_geoip_module) 国家名称。例如,“印度”、“美国”。
$geoip_country_code (ngx_http_geoip_module) 两个字母的国家/地区代码。例如,“RU”、“美国”。
$geoip_country_code (ngx_stream_geoip_module) 两个字母的国家/地区代码。例如,“RU”、“美国”。
$geoip_country_code3 (ngx_http_geoip_module) 三个字母的国家/地区代码。例如,“俄罗斯”、“美国”。
$geoip_country_code3 (ngx_stream_geoip_module) 三个字母的国家/地区代码。例如,“俄罗斯”、“美国”。
$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 令牌)声明的值。
$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 附加了 $remote_addr 变量的“X-Forwarded-For”客户端请求标头字段,用逗号分隔。如果客户端请求标头中不存在“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 协议标头的客户端地址,否则为空字符串。必须先启用 PROXY 协议。这可以通过在 listen 指令中设置代理协议参数来完成。
$proxy_protocol_addr (ngx_stream_core_module) 来自 PROXY 协议标头的客户端地址,否则为空字符串。必须先启用 PROXY 协议。这可以通过在 listen 指令中设置代理协议参数来完成。
$proxy_protocol_port (ngx_http_core_module) 来自 PROXY 协议标头的客户端地址,否则为空字符串。必须先启用 PROXY 协议。这可以通过在 listen 指令中设置代理协议参数来完成。
$proxy_protocol_port (ngx_stream_core_module) 来自 PROXY 协议标头的客户端地址,否则为空字符串。必须先启用 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连接,其中每行除了1日前面添加制表符。
$ssl_client_cert (ngx_stream_ssl_module) 它会返回在PEM(增强保密邮件)的客户端证书建立SSL连接,其中每行除了1日前面添加制表符。
$ssl_client_escaped_cert 它将为已建立的 SSL 连接返回 PEM(隐私增强邮件)中的客户端证书
$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(服务器名称指示)请求的服务器的名称。
$ssl_protocol (ngx_http_ssl_module) 它将返回已建立的 SSL 连接的协议。
$ssl_protocol (ngx_stream_ssl_module) 它将返回已建立的 SSL 连接的协议。
$ssl_server_name (ngx_http_ssl_module) 返回通过 SNI(服务器名称指示)请求的服务器的名称。
$ssl_server_name (ngx_stream_ssl_module) 返回通过 SNI(服务器名称指示)请求的服务器的名称。
$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',那么客户端标识符将被重置。特殊值日志还会导致将有关重置标识符的消息输出到 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) 用于保持与上游服务器(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(错误网关)状态代码。
$upstream_trailer_name 它用于保持字段远离从上游服务器获得的响应的末尾。
$uri 请求中的当前 URI,已标准化。我们可以在请求处理期间更改 $uri 的值,例如在进行内部重定向或使用索引文件时。