首页 > Java > nginx 代理 sse 接口,报:(failed) net::ERR HTTP2 PROTOCOL ERROR

nginx 代理 sse 接口,报:(failed) net::ERR HTTP2 PROTOCOL ERROR

前一段时间曾写了一篇关于Spring MVC 通过 SSE 实现消息推送的小文章,后来系统上线的时候,遇到了一个小问题,打开浏览器的 network,看到接口报:(failed) net::ERR HTTP2 PROTOCOL ERROR,通常是因为 HTTP/2 协议与 SSE 的某些特性不兼容所导致的。SSE 是基于 HTTP 协议的服务器推送技术,它要求连接保持打开状态以便服务器可以持续发送更新给客户端。我们使用的 nginx version 是:nginx/1.26.1

只需要按如下配置即可解决:


server {
    listen       80;
    server_name bridgeli.com;

    access_log /var/log/nginx/bridgeli_access.log;
    error_log /var/log/nginx/bridgeli_error.log warn;

    location ^~ /admin-api/ {
        proxy_pass         http://192.168.124.34:8080/;
        
        # 确保使用HTTP/1.1来支持SSE
        proxy_http_version 1.1;
        
        # 关闭代理连接的“Connection”头,以避免潜在的问题
        proxy_set_header Connection '';
        
        # 增加超时设置,确保长时间连接不会被关闭
        proxy_read_timeout 86400s;
        proxy_send_timeout 86400s;

        # 如果需要禁用HTTP/2(可选)
        # 注意:这个设置是在server块中,而不是location块中
        # listen 80 http2 off; 对于HTTP/2协议错误特别有用
    }

    location / {
        root   /project/www/bridgeli/admin/;
        try_files $uri $uri/ /index.html;
    }
}

全文完,如果本文对您有所帮助,请花 1 秒钟帮忙点击一下广告,谢谢。

作 者: BridgeLi,https://www.bridgeli.cn
原文链接:http://www.bridgeli.cn/archives/781
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。
分类: Java 标签: ,
  1. 本文目前尚无任何评论.

请输入正确的验证码