$sent_http_transfer_encoding

$sent_http_transfer_encoding 包含发送到客户端的 'Transfer-Encoding' 头的值。 — NGINX Core (HTTP)

$sent_http_transfer_encoding NGINX Core (HTTP)

说明

NGINX 中的 $sent_http_transfer_encoding 变量保存作为发送给客户端的 HTTP 响应中的 'Transfer-Encoding' 头的值。该变量在使用分块传输编码的 HTTP 响应中特别有用。要使该变量成功赋值,NGINX 配置必须指定传输编码方法,这通常发生在使用动态内容生成机制(例如 PHP 或上游服务器)时。当 NGINX 自行生成响应时,除非明确设置,否则该变量的值可能默认为空字符串。 该变量可以取多种值,最常见的是 `chunked`,表示响应将以一系列分块发送,而不是作为单个完整消息发送。这在可以分块流式传输的大型响应或事先未知响应总大小的情况下尤其有用。如果服务器未设置任何传输编码,则该变量不会包含任何值,反映未使用传输编码。

配置示例

location /api {
    proxy_pass http://backend;
    proxy_set_header Accept-Encoding '';  
}


location /stream {
    proxy_pass http://stream_backend;
    add_header Transfer-Encoding chunked;
}

子系统

http

可缓存

上下文

http, server, location, if

确保后端服务支持并正确实现分块传输编码,以避免出现意外行为。

在不适当的上下文中使用 $sent_http_transfer_encoding 可能会产生意外或空的结果。它通常与代理设置一起使用。