要在 nginx access_log 中记录自定义 header(如 $http_user_token),需按规则命名变量、在 log_format 中引用,并确保 header 被客户端发送且未被上游过滤;可选 map 设置默认值提升日志可读性。

要在 Nginx 的 access_log 中记录自定义 Header(例如 $http_user_token),关键在于正确使用 Nginx 的变量语法,并确保日志格式中包含该变量。
确认 Header 变量名写法
Nginx 会将请求头(Header)自动映射为变量,规则是:$http_ + 小写 + 下划线替换横线。
例如:
-
User-Token→$http_user_token -
X-Request-ID→$http_x_request_id -
Authorization→$http_authorization
注意:大小写不敏感,但 Nginx 统一转为小写;横线(-)必须替换成下划线(_)。
定义带自定义变量的日志格式
在 http 或 server 块中添加或修改 log_format,例如:
然后在 access_log 指令中引用它:
对设计或页面进行 WCAG 2.1 AA 无障碍审计。触发关键词:“audit accessibility”、 “check a11y”、 “is this accessible?” 或在审查设计时使用。
验证 Header 是否实际存在并被传递
如果日志中对应字段为空(-),常见原因有:
- 客户端未发送该 Header(可用
curl -H "User-Token: abc123" http://your.site测试) - 反向代理(如 CDN、LB)过滤或未透传该 Header(需检查上游配置)
- Nginx 配置了
underscores_in_headers on;—— 虽非必需,但建议开启,避免某些含下划线的 Header 被忽略
可选:为缺失值设默认值
用 map 指令提供兜底值,让日志更清晰:
default $http_user_token;
"" "-";
}
再在日志格式中使用 $log_user_token 替代 $http_user_token。










