$sent_http_ 是 nginx 记录响应头字段的变量前缀,用于在 log_format 中捕获 x-auth-*、trace-id、content-encoding、x-cache 等响应头,支撑鉴权审计、链路追踪、压缩监控与业务标记分析。

$sent_http_ 是 Nginx 日志中用于记录响应头字段的关键变量前缀,它不是“指令”,而是变量命名规则的一部分——只要你在响应中设置了某个 HTTP 响应头(比如 X-Auth-Status、Content-Encoding 或 Bili-Trace-Id),就可以用 $sent_http_x_auth_status、$sent_http_content_encoding、$sent_http_bili_trace_id 这样的形式,把它写进 log_format 中。
记录认证结果与用户上下文
当你用 auth_request 模块做统一鉴权时,后端服务常通过响应头传递认证信息。例如:
- 后端返回
X-Auth-User-ID: alice123和X-Auth-Role: admin - Nginx 配置中启用
auth_request /auth,并确保这些头被透传 - 在
log_format中加入$sent_http_x_auth_user_id和$sent_http_x_auth_role
这样每条日志就能明确记录“谁(用户ID)、以什么身份(角色)、访问了哪个资源”,支撑权限审计与行为回溯。
追踪下游服务链路与调试
反向代理场景下,上游服务(如 API 网关、BFF 层)常注入唯一标识类响应头:
-
Trace-ID: abc123、X-Request-ID: xyz789、Bili-Trace-Id - 这些头对排查跨服务调用问题至关重要
- 只需在
log_format中添加$sent_http_trace_id或$sent_http_x_request_id即可持久化留存
注意:Nginx 对 header 名大小写不敏感,X-Request-ID 对应的变量是 $sent_http_x_request_id(连字符转下划线,全小写)。
监控内容压缩与响应优化效果
要评估 Gzip/Brotli 是否生效,最直接的方式是看实际发出的 Content-Encoding 响应头:
-
$sent_http_content_encoding在响应真正写出后才被赋值,反映最终编码方式 - 空值表示未压缩;
gzip或br表示对应压缩启用成功 - 配合
awk统计日志,可快速算出压缩覆盖率和类型占比
这对调优 gzip_min_length、brotli_types 等参数非常实用。
捕获自定义业务响应标记
很多内部服务会在响应头中打标,比如:
-
X-Cache: HIT或X-Cache: MISS(CDN/代理缓存状态) -
X-Backend: api-v2(路由到的具体后端实例) -
X-RateLimit-Remaining: 98(限流剩余配额)
把这些头写入日志,能帮你快速定位缓存失效、灰度路由异常或限流触发点,无需额外埋点或查上下游日志。











