$sent_http_content_length

变量 $sent_http_content_length 返回 HTTP 响应中发送的 Content-Length 头的值。 — NGINX Core (HTTP)

$sent_http_content_length NGINX Core (HTTP)

说明

当 NGINX 处理请求时,它会收集将要返回给客户端的各类响应头。变量 $sent_http_content_length 专门捕获指示响应体大小(以字节为单位)的 Content-Length 头。该变量在请求处理阶段设置,通常包含表示由服务器生成的响应长度的数值;如果无法确定响应长度,或使用了 chunked transfer encoding 而不是具体的 Content-Length,变量可能为空。 Content-Length 头对于 HTTP/1.1 通信很重要,因为它允许客户端确切知道响应体需要接收多少字节。在生成动态内容的场景中,NGINX 可能要到响应体完全处理完毕才确定内容长度。因此,在需要根据内容大小进行特定处理(例如条件性日志记录或基于内容大小的响应修改)的场景中,使用该变量会很有帮助。

配置示例

server {
    listen 80;
    location / {
        add_header X-Content-Length $sent_http_content_length;
        proxy_pass http://backend;
    }
}

子系统

http

可缓存

上下文

http, server, location, if

如果响应使用分块编码,$sent_http_content_length 将为空。

确保在响应头已被设置后再访问该变量,以避免出现意外结果。