You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Nginx的proxy_pass支持HTTP流式响应转发?

Nginx代理流式API实现实时转发的配置修改

要让Nginx实现流式转发Express的HTTP流响应,你需要关闭Nginx默认的代理缓冲机制,同时配置对应的HTTP协议参数。在你的/api/ location块中添加以下关键配置:

location /api/ {
    proxy_pass http://localhost:8080/;
    # 关闭代理缓冲,实时转发响应
    proxy_buffering off;
    # 使用HTTP/1.1协议,支持分块传输
    proxy_http_version 1.1;
    # 重置Connection头,避免长连接缓冲
    proxy_set_header Connection '';
    # 启用分块传输编码
    chunked_transfer_encoding on;
    # 确保关闭代理缓存
    proxy_cache off;
}

配置项说明:

  • proxy_buffering off;:这是实现流式传输的核心配置,关闭后Nginx不会缓存上游服务器的响应数据,收到一部分就立刻转发给浏览器。
  • proxy_http_version 1.1;:Express的流式响应依赖HTTP/1.1的分块传输编码(Chunked Transfer Encoding),必须指定Nginx使用该版本协议。
  • proxy_set_header Connection '';:清除默认的Connection头,避免Nginx和上游服务器建立长连接时触发额外的缓冲逻辑。
  • chunked_transfer_encoding on;:显式启用分块传输,确保响应以分块形式发送,让浏览器能够实时接收流式数据。
  • proxy_cache off;:明确关闭代理缓存,防止Nginx将响应缓存后再整体返回。

修改后的完整Nginx配置如下:

http {
    include mime.types;
    ssl_session_cache    shared:SSL:10m;
    ssl_session_timeout  10m;

    server {
        listen 443 ssl;
        server_name xxx.com;
        keepalive_timeout 70;
        ssl_certificate <crt-path>;
        ssl_certificate_key <key-path>;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers   HIGH:!aNULL:!MD5;

        location /api/ {
            proxy_pass http://localhost:8080/;
            proxy_buffering off;
            proxy_http_version 1.1;
            proxy_set_header Connection '';
            chunked_transfer_encoding on;
            proxy_cache off;
        }

        location / {
            root /public;
            try_files $uri $uri/ /index.html;
        }
    }
}

配置修改完成后,重启Nginx服务即可生效,此时Express返回的HTTP流会被实时转发到浏览器,不再经过Nginx的缓冲。

内容的提问来源于stack exchange,提问作者Shawn White

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:13:23