$body_bytes_sent
$body_bytes_sent 变量在 NGINX 中包含发送给客户端的响应体字节数,不包括响应头。 — NGINX Core (HTTP)
$body_bytes_sent
NGINX Core (HTTP)
说明
$body_bytes_sent 变量是用于 NGINX 日志记录和性能监控的一个重要指标。它捕获发送给客户端的总数据量,具体来说是响应体中传输的字节数。该变量在每个请求处理过程中设置,一旦响应体生成并发送完毕。需要注意的是,该变量不计算发送给客户端的头部,仅计入主体内容。 在涉及性能评估和带宽计算的场景中,该变量尤其有用。随着 HTTP 请求的处理进展,NGINX 会为已传输的字节维护一个累加器,最终得到 $body_bytes_sent 的值。典型值可能从 0(例如请求导致错误或未发送主体内容的情况)到基于响应性质的任意大小——对于简单的 HTML 页面较小,对于文件下载或媒体流则可能较大。 在实际应用中,$body_bytes_sent 的值可以帮助管理员识别流量模式、用户对内容的参与度以及应用潜在的优化点。通过记录该变量,可以分析带宽使用情况并诊断与响应缓慢相关的问题,方法是将传输的字节与其他变量(例如响应时间和请求速率)进行关联。
配置示例
log_format custom_format '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent'; access_log /var/log/nginx/access.log custom_format;
子系统
http可缓存
是上下文
http, server, location, if⚠
确保在响应主体被设置或传输之后再访问该变量,否则它可能返回意外值,例如 0。
⚠
请记住,$body_bytes_sent 不包括头部;如果你需要包含头部的已发送总字节数,则需要另行计算。