chunked_transfer_encoding

'chunked_transfer_encoding' 指令在 NGINX 中启用或禁用 HTTP 响应的分块传输编码。 — NGINX HTTP Core

chunked_transfer_encoding
httpserverlocation
语法chunked_transfer_encoding on | off;
默认值off
上下文http, server, location
模块NGINX HTTP Core
参数flag

说明

当 chunked_transfer_encoding 指令设置为 'on' 时,NGINX 将使用分块传输编码向客户端发送响应,而不是在 HTTP 头部中指定总内容长度。分块传输编码对于动态生成的内容特别有用,因为在响应开始时无法知道内容的总大小。通过使用这种方法,NGINX 可以在数据可用时立即开始向客户端发送,从而改善应用的感知性能并降低延迟。 该指令接受一个标志参数,可为 'on' 或 'off'。设置为 'on' 时,NGINX 将启用分块传输编码;设置为 'off' 时将禁用。该指令的位置灵活;可以在 http、server 或 location 上下文中使用,允许用户根据需要在全局或特定上下文中应用。通常,对动态生成的响应启用分块传输编码更为有利,例如由 CGI 脚本生成的响应或反向代理到应用服务器时,这类响应在开始时无法预先得知最终内容长度。

配置示例

http {
    server {
        location / {
            chunked_transfer_encoding on;
            proxy_pass http://backend;
        }
    }
}

在使用动态内容时禁用分块传输编码可能会导致延迟增加,因为 NGINX 需要在发送响应之前知道总体内容长度。

将分块响应与缓冲设置混合使用可能会导致意外行为;当启用分块编码时,务必确保缓冲区配置与其兼容。