$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 不包括头部;如果你需要包含头部的已发送总字节数,则需要另行计算。