nginx
location /sse/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://back-server;
proxy_buffering off; # 关键!关闭代理缓冲
proxy_cache off; # 关闭代理缓存
proxy_http_version 1.1; # 必须使用1.1版本以支持长连接
proxy_set_header Connection "";
chunked_transfer_encoding on; # 确保分块编码开启
gzip off; # 添加这一行
proxy_read_timeout 86400s; # 24小时,足够长
proxy_send_timeout 86400s;
proxy_connect_timeout 600s;
}
k8s
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: 200M
# SSE 核心配置(都不需要 snippet)
nginx.ingress.kubernetes.io/proxy-buffering: "off"
nginx.ingress.kubernetes.io/proxy-request-buffering: "off"
nginx.ingress.kubernetes.io/proxy-http-version: "1.1"
# 超时配置
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600s"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600s"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600s"
nginx.ingress.kubernetes.io/keepalive: "3600"
nginx.ingress.kubernetes.io/upstream-keepalive-connections: "200"
nginx.ingress.kubernetes.io/upstream-keepalive-timeout: "3600s"
name: xxx-web
namespace: devops
spec:
ingressClassName: nginx
rules:
- host: xxx.xxx.com
http:
paths:
- backend:
service:
name: xxx-web
port:
number: 80
path: /
pathType: Prefix