您的位置 首页 nginx

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

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

大模型流式输出 sse实现时,如何配置nginx - 知乎 (zhihu.com)

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 替换为你的实际后端服务地址。此外,你可能需要根据你的具体需求和环境对配置进行调整。

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章