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: 请求方法,通常为 GETPOST
  • request_time: 请求处理时间,以秒为单位,毫秒精度;自从读取客户端的第一个字节以来经过的时间。
  • request_uri: 完整的原始请求 URI(包括参数)。
  • req_id: 唯一的请求标识符。
  • scheme: 请求协议名称,httphttps
  • server_addr: 接受请求的服务器地址。
  • server_name: 接受请求的服务器名称。
  • server_port: 接受请求的服务器端口号。
  • server_protocol: 请求协议,通常为 HTTP/1.0HTTP/1.1HTTP/2.0HTTP/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: 访问响应缓存的状态。状态可以是MISSBYPASSEXPIREDSTALEUPDATINGREVALIDATEDHIT
  • 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 版本中首次引入。

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: 返回客户端证书验证的结果:SUCCESSFAILED: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:解码后的代理鉴权信息。