大模型流式输出 sse实现时,如何配置nginx

要配置 Nginx 以支持大模型的流式输出,特别是使用 SSE (Server-Sent Events),你需要确保 Nginx 能够处理 HTTP 流式连接。以下是一份配置示例,以及对各部分配置的解释:

http {
    # ...
    server {
        # ...

        # 设置服务器的监听端口,例如 80
        listen 80;

        # 设置服务器名称(如果有)
        server_name example.com;

        # SSE 通常不需要特别的 location 配置,但你可以根据需要进行设置
        location /stream {
            # 设置 Nginx 不对 SSE 响应进行缓冲,直接透传给客户端
            proxy_buffering off;
            
            # 设置代理读取服务器响应的超时时间
            proxy_read_timeout 24h;
            
            # 设置客户端连接的超时时间
            proxy_connect_timeout 1h;
            
            # 设置 HTTP 版本,SSE 需要 HTTP/1.1
            proxy_http_version 1.1;
            
            # 保持连接活性,不发送连接关闭的信号
            proxy_set_header Connection '';

            # 配置代理传递的头部,确保 Host 头部正确传递
            proxy_set_header Host $host;

            # 配置代理的后端服务器地址
            proxy_pass http://backend_upstream;

            # 设置代理的响应头部,保持传输编码为 chunked
            proxy_set_header X-Accel-Buffering no;
            
            # 设置跨域资源共享 (CORS),如果你的客户端和服务器不在同一个域上
            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Allow-Credentials' 'true' always;
            add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS' always;
            add_header 'Access-Control-Allow-Headers' 'Origin,Authorization,Accept,X-Requested-With' always;
            if ($request_method = 'OPTIONS') {
                # 如果请求方法为 OPTIONS,则返回 204 (无内容)
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS';
                add_header 'Access-Control-Allow-Headers' 'Origin,Authorization,Accept,X-Requested-With';
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }
        }

        # ...
    }
    # ...
}

在这个配置中:

  • proxy_buffering off; 确保 Nginx 不会缓冲响应,而是直接将其发送给客户端,这对于 SSE 至关重要。
  • proxy_read_timeout 设置了 Nginx 等待后端服务器响应的超时时间。SSE 需要长时间的连接,所以这个值设置得比较高。
  • proxy_connect_timeout 设置了 Nginx 尝试与后端服务器建立连接的超时时间。
  • proxy_http_version 1.1; 指定使用 HTTP/1.1,因为 SSE 需要这个版本的协议。
  • proxy_set_header Connection ''; 确保 Nginx 不会发送 Connection: close 头部,这对于保持长连接至关重要。
  • proxy_pass 指向后端服务的地址,这里应该替换为你的后端服务器地址。
  • proxy_set_header X-Accel-Buffering no; 确保 Nginx 不会对此连接进行缓冲。
  • CORS 相关的头部设置允许不同的源请求资源。这在你的服务需要被不同域的客户端访问时很有用。

确保将 example.com 替换为你的实际域名,http://backend_upstream 替换为你的实际后端服务地址。此外,你可能需要根据你的具体需求和环境对配置进行调整。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值