OpenResty Edge 的访问日志变量
HTTP 变量
args: 请求行中的参数。realip_remote_addr: 原始客户端地址。realip_remote_port: 原始客户端端口。binary_remote_addr: 以二进制形式表示的客户端地址,值的长度对于 IPv4 地址始终为 4 字节,对于 IPv6 地址始终为 16 字节。body_bytes_sent: 发送到客户端的字节数,不包括响应头。bytes_sent: 发送给客户端的字节数。total_bytes: 请求体和响应体的字节数之和。connection: 连接序列号。connection_requests: 通过当前连接发送的请求数。connections_active: 当前活动的客户端连接数,包括“等待”连接。connections_reading: 正在读取请求头的连接数。connections_waiting: 正在等待请求的空闲客户端连接数。connections_writing: 正在将响应写回客户端的连接数。content_length: 请求头字段Content-Length的值。content_type: 请求头字段Content-Type的值。date_gmt: 当前的 GMT 时间。date_local: 当前的本地时间。document_uri: 和$uri相同。gzip_ratio: 压缩比,即压缩后的大小占原始大小的比例。host: 请求行中的主机名或请求头Host字段中的主机名。hostname: 主机名。http2: 通过浏览器和服务器之间协商的应用层协议版本标识符:TLS 上的 HTTP/2 标识符为h2,未加密的 TCP 上的 HTTP/2 标识符为h2c,否则为空字符串。https: 当连接以 SSL 模式运行时,值为on,否则为空字符串。invalid_referer: 如果条件满足,即Referer请求头字段的值合法,则为空字符串,否则为1。is_args: 如果请求行有参数,则为?,否则为空字符串。msec: 当前毫秒精度下的秒数表示的时间。pid: 工作进程的 PID。pipe: 请求是否通过管道传输,若是则为p,否则为.。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_completion: 如果请求已完成,则为OK,否则为空字符串。request_id: 以十六进制表示的由 16 字节随机数生成的唯一请求标识符。request_length: 请求的长度(包括请求行、头部和正文)。request_method: 请求方法,通常为GET或POST。request_time: 请求处理时间,以秒为单位,毫秒精度;自从读取客户端的第一个字节以来经过的时间。request_uri: 完整的原始请求 URI(包括参数)。req_id: 唯一的请求标识符。scheme: 请求协议名称,http或https。server_addr: 接受请求的服务器地址。server_name: 接受请求的服务器名称。server_port: 接受请求的服务器端口号。server_protocol: 请求协议,通常为HTTP/1.0、HTTP/1.1、HTTP/2.0或HTTP/3.0。spdy: SPDY 连接的协议版本,否则为空字符串。spdy_request_priority: SPDY 连接上的请求优先级,否则为空字符串。ssl_cipher: 返回已建立 SSL 连接所使用的密码名称。ssl_ciphers: 返回客户端支持的密码列表。已知密码按名称列出,未知密码显示为十六进制,例如:AES128-SHA:AES256-SHA:0x00ff。ssl_client_cert: 返回已建立 SSL 连接的客户端证书的 PEM 格式,每行除第一行外都以制表符开头。ssl_client_fingerprint: 返回已建立 SSL 连接的客户端证书的 SHA1 指纹。ssl_client_escaped_cert: 返回已建立 SSL 连接的客户端证书的 PEM 格式(经过 URL 编码)。ssl_client_i_dn: 返回已建立 SSL 连接的客户端证书的issuer DN,根据 RFC 2253 规定。ssl_client_i_dn_legacy: 返回已建立 SSL 连接的客户端证书的issuer DN。ssl_client_raw_cert: 返回已建立 SSL 连接的客户端证书的 PEM 格式。ssl_client_s_dn: 返回已建立 SSL 连接的客户端证书的主题 DN 字符串,根据 RFC 2253 规定。ssl_client_s_dn_legacy: 返回已建立 SSL 连接的客户端证书的subject DN DN。ssl_client_serial: 返回已建立 SSL 连接的客户端证书的序列号。ssl_client_v_end: 返回客户端证书的结束日期。ssl_client_v_remain: 返回客户端证书到期剩余天数。ssl_client_v_start: 返回客户端证书的开始日期。ssl_client_verify: 返回客户端证书验证结果:SUCCESS表示验证成功,FAILED:reason表示验证失败并给出原因,如果没有证书则返回NONE。ssl_curves: 返回客户端支持的曲线列表。已知曲线按名称列出,未知曲线显示为十六进制,例如:0x001d:prime256v1:secp521r1:secp384r1。ssl_early_data: 如果使用 TLS 1.3 的 early data,并且握手未完成,则返回1;否则为空字符串。ssl_preread_alpn_protocols: 通过 ALPN 广告的客户端协议列表。值由逗号分隔。ssl_preread_protocol: 客户端支持的最高 SSL 协议版本。ssl_preread_server_name: 通过 SNI 请求的服务器名称。ssl_protocol: 返回已建立 SSL 连接的协议。ssl_server_name: 返回通过 SNI 请求的服务器名称。ssl_session_id: 返回已建立 SSL 连接的会话标识符。ssl_session_reused: 返回r表示 SSL 会话已重用,否则为.。status: 响应状态码。tcpinfo_rcv_space/tcpinfo_rtt/tcpinfo_rttvar/tcpinfo_snd_cwnd: 关于客户端 TCP 连接的信息;仅在支持 TCP_INFO 套接字选项的系统上可用。time_iso8601: 当地时间,ISO 8601 标准格式。time_local: 当地时间,通用日志格式(Common Log)。time_local_msec: 当地时间,毫秒精度在通用日志格式中。upstream_addr: 上游服务器的 IP 地址和端口,或 UNIX 域套接字的路径。如果在请求处理期间联系了多个服务器,则它们的地址以逗号分隔,例如192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock。upstream_bytes_received: 接收自上游服务器的字节数。来自多个连接的值由逗号和冒号分隔,就像在$upstream_addr变量中的地址一样。upstream_bytes_sent: 发送到上游服务器的字节数。来自多个连接的值由逗号和冒号分隔,就像在$upstream_addr变量中的地址一样。upstream_cache_status: 访问响应缓存的状态。状态可以是MISS、BYPASS、EXPIRED、STALE、UPDATING、REVALIDATED或HIT。upstream_connect_time: 与上游服务器建立连接所花费的时间;时间以毫秒为精度,以秒为单位。对于 SSL,包括握手时间。多个连接的时间以逗号和冒号分隔,就像在$upstream_addr变量中的地址一样。upstream_first_byte_time: 接收数据第一个字节所需的时间;时间以毫秒为精度,以秒为单位。多个连接的时间以逗号分隔,就像在$upstream_addr变量中的地址一样。upstream_header_time: 从上游服务器接收响应头所花费的时间;时间以毫秒为精度,以秒为单位。多个响应的时间以逗号和冒号分隔,就像在$upstream_addr变量中的地址一样。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)状态码。uri: 规范化后的当前请求 URI。在请求处理过程中,$uri的值可能会更改,例如当进行内部重定向或使用索引文件时。app_id: OpenResty Edge 的 HTTP 应用 ID。internal_request: 是否是内部请求。limit_action: 限制动作,如block。response_body: 响应体。proxy_protocol_addr: PROXY 协议头中的客户端地址。proxy_protocol_port: PROXY 协议头中的客户端端口。client_isp: 客户端互联网服务提供商(Internet Service Provider)。这表示访问者使用的网络服务提供商,如 Comcast、Verizon、中国电信等。该变量在 v24.9.1 版本中首次引入。client_asn: 客户端自治系统编号(Autonomous System Number)。这是一个用于标识互联网上的路由域的唯一标识符。每个 ISP 或大型网络通常都有自己的 ASN。该变量在 v24.9.1 版本中首次引入。client_country: 客户端所在国家。这表示访问者的 IP 地址所对应的国家,如中国、美国、日本等。该变量在 v24.9.1 版本中首次引入。client_continent: 客户端所在大洲。这表示访问者的 IP 地址所对应的大洲,如亚洲、北美洲、欧洲等。该变量在 v24.9.1 版本中首次引入。client_province: 客户端所在省份或州。这表示访问者的 IP 地址所对应的省份(在中国)或州(在美国等国家),如广东省、加利福尼亚州等。该变量在 v24.9.1 版本中首次引入。client_city: 客户端所在城市。这表示访问者的 IP 地址所对应的城市,如北京、纽约、东京等。该变量在 v24.9.1 版本中首次引入。client_aso: 客户端自治系统组织名称(Autonomous System Organization)。ASO 是用于标识互联网路由域的唯一标识符,每个 ISP 或大型网络运营商通常拥有独立的 ASN/ASO。该变量在 v25.6.1 版本中首次引入。edge_cache_status: 边缘代理缓存的响应状态,表示客户端实际看到的缓存状态。由于 OpenResty Edge 支持集群缓存跨多个服务器共享,该状态可能与upstream_cache_status存在差异。该变量在 v25.6.1 版本中首次引入。cluster_hash_cache_status: 集群缓存的响应状态列表。在 OpenResty Edge 的集群缓存架构中,单个请求可能经过多个 Edge Node 网关服务器处理,此变量记录了所有相关的缓存状态信息。该变量在 v25.6.1 版本中首次引入。edge_upstream_addr: 代理请求最终访问的上游服务器地址。在集群缓存场景下,请求可能在多个 Edge Node 间流转而无需访问实际上游服务器。当请求完全由缓存满足时,此变量值为空字符串。该变量在 v25.6.1 版本中首次引入。cluster_hash_upstream_addr: 集群缓存访问路径中的上游服务器列表。此变量记录了请求在集群缓存架构中的完整路径,包括所有经过的 Edge Node 网关服务器以及最终的上游服务器地址。该变量在 v25.6.1 版本中首次引入。
HTTP 固定前缀变量
arg_: 请求行中的参数名称。upstream_trailer_: 从上游服务器获取的响应末尾的字段。upstream_http_: 服务器响应头字段。例如,Server响应头字段可通过$upstream_http_server变量访问。将头字段名称转换为变量名称的规则与以$http_前缀开头的变量相同。仅保存最后一个服务器响应的头字段。sent_http_: 任意的响应头字段;变量名称的最后一部分是字段名称,转换为小写并用下划线代替破折号。sent_trailer_: 发送到响应末尾的任意字段;变量名称的最后一部分是字段名称,转换为小写并用下划线代替破折号。cookie_: cookie 的名称。http_: 任意的请求头字段;变量名称的最后一部分是字段名称,转换为小写并用下划线代替破折号。upstream_cookie_: 上游服务器在Set-Cookie响应头字段中发送的具有指定名称的 cookie。仅保存最后一个服务器响应中的 cookie。or-global-: OpenResty Edge 的全局变量。
Stream 变量
binary_remote_addr: 以二进制形式表示的客户端地址,IPv4 地址的值长度始终为 4 字节,IPv6 地址的值长度为 16 字节。bytes_sent: 发送给客户端的字节数。connection: 连接序列号。hostname: 主机名。msec: 当前时间(以秒为单位,毫秒为精度)。pid: 工作进程的 PID。proxy_protocol_addr: 来自 PROXY 协议头的客户端地址。proxy_protocol_port: 来自 PROXY 协议头的客户端端口。proxy_protocol_server_addr: 来自 PROXY 协议头的服务器地址。proxy_protocol_server_port: 来自 PROXY 协议头的服务器端口。remote_addr: 客户端地址。remote_port: 客户端端口。server_addr: 接受连接的服务器地址。server_port: 接受连接的服务器端口。ssl_cipher: 返回用于建立 SSL 连接的加密算法名称。ssl_ciphers: 返回客户端支持的密码列表。已知的密码按名称列出,未知的密码以十六进制表示,例如:AES128-SHA:AES256-SHA:0x00ff。ssl_client_cert: 返回已建立的 SSL 连接中客户端证书的 PEM 格式。除第一行外,每行前缀为制表符。ssl_client_fingerprint: 返回已建立的 SSL 连接中客户端证书的 SHA1 指纹。ssl_client_i_dn: 返回已建立的 SSL 连接中客户端证书的issuer DN,格式符合 RFC 2253。ssl_client_raw_cert: 返回已建立的 SSL 连接中客户端证书的 PEM 格式。ssl_client_s_dn: 返回已建立的 SSL 连接中客户端证书的subject DN,格式符合 RFC 2253。ssl_client_serial: 返回已建立的 SSL 连接中客户端证书的序列号。ssl_client_v_end: 返回客户端证书的到期日期。ssl_client_v_remain: 返回到客户端证书过期的天数。ssl_client_v_start: 返回客户端证书的起始日期。ssl_client_verify: 返回客户端证书验证的结果:SUCCESS、FAILED:reason和如果证书不存在则为NONE。ssl_curves: 返回客户端支持的曲线列表。已知的曲线按名称列出,未知的曲线以十六进制表示,例如:0x001d:prime256v1:secp521r1:secp384r1。ssl_protocol: 返回已建立的 SSL 连接的协议。ssl_server_name: 返回通过 SNI 请求的服务器名称。ssl_session_id: 返回已建立的 SSL 连接的会话 ID。ssl_session_reused: 如果 SSL 会话被重新使用,则返回r;否则返回.。time_iso8601: 本地时间,在 ISO 8601 标准格式下显示。time_local: 本地时间,在通用日志格式格式下显示。time_local_msec: 毫秒精度的本地时间,在通用日志格式下显示。upstream_addr: 上游服务器的 IP 地址和端口号,或 UNIX 域套接字的路径。如果在请求处理期间与多个服务器联系,则它们的地址用逗号分隔,例如192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock。upstream_bytes_received: 从上游服务器接收的字节数。几个连接的值用逗号和冒号分隔,就像$upstream_addr变量中的地址一样。upstream_bytes_sent: 发送到上游服务器的字节数。几个连接的值用逗号和冒号分隔,就像$upstream_addr变量中的地址一样。upstream_connect_time: 与上游服务器建立连接所花费的时间;时间用秒表示,毫秒为精度。在 SSL 的情况下,包括用于握手的时间。几次连接的时间以逗号和冒号分隔,就像$upstream_addr变量中的地址一样。
Socks5 变量
time: 请求开始的本地时间。request_time: 请求开始的时间。up_bytes: 请求的字节数。down_bytes: 响应的字节数。proxy_port: 代理服务器的端口。client_addr: 客户端地址。username: 用户名。upstream_host: 上游主机名。upstream_port: 上游端口。status: 状态码。bandwidth: 带宽规则名称。failure: 失败原因
HTTP 正向代理变量
time:请求开始的本地时间。up_bytes:请求的字节数。down_bytes:响应的字节数。proxy_port:代理服务器端口。client_addr:客户端地址。upstream_host:上游地址。upstream_port:上游端口。method:请求方法。status:请求状态码。failure:失败原因。account_key:账号关键字。account:账号。pa_:代理鉴权的信息。header_:请求头部信息,如 header_host。arg_:URI 参数信息,如 arg_name。decoded_proxy_authorization:解码后的代理鉴权信息。