如何利用 log_format 实现对 $http_sec_ch_ua 的配置以监控现代浏览器Client Hints?
- 内容介绍
- 文章标签
- 相关推荐
本文共计797个文字,预计阅读时间需要4分钟。
无法直接使用 `$http_sec_ch_ua` 记录 Sec-CH-UA 头部信息,因为 Nginx 默认不解析或暴露 Client Hints 类请求头 - 它不属于标准 HTTP 头部字段白名单。需显式启用才能在 `log_format` 中使用。
为什么 $http_sec_ch_ua 在 log_format 中为空或不生效
Nginx 对以 Sec- 开头的客户端提示头(如 Sec-CH-UA、Sec-CH-UA-Mobile、Sec-CH-UA-Platform)默认忽略,除非满足两个前提:
- Nginx 版本 ≥ 1.21.6(支持
underscores_in_headers on及更宽松的 header 解析); - 客户端实际发送了该头部(仅 Chromium 101+、Edge 101+、Opera 87+ 等现代浏览器在开启相关权限策略后才发送,且需页面主动发起
accept-ch声明); - 请求未被中间代理(如 CDN、WAF)剥离 Sec-CH-* 头部(很多 CDN 默认过滤这类非标准头)。
本文共计797个文字,预计阅读时间需要4分钟。
无法直接使用 `$http_sec_ch_ua` 记录 Sec-CH-UA 头部信息,因为 Nginx 默认不解析或暴露 Client Hints 类请求头 - 它不属于标准 HTTP 头部字段白名单。需显式启用才能在 `log_format` 中使用。
为什么 $http_sec_ch_ua 在 log_format 中为空或不生效
Nginx 对以 Sec- 开头的客户端提示头(如 Sec-CH-UA、Sec-CH-UA-Mobile、Sec-CH-UA-Platform)默认忽略,除非满足两个前提:
- Nginx 版本 ≥ 1.21.6(支持
underscores_in_headers on及更宽松的 header 解析); - 客户端实际发送了该头部(仅 Chromium 101+、Edge 101+、Opera 87+ 等现代浏览器在开启相关权限策略后才发送,且需页面主动发起
accept-ch声明); - 请求未被中间代理(如 CDN、WAF)剥离 Sec-CH-* 头部(很多 CDN 默认过滤这类非标准头)。

