美文网首页
解决nginx转发websocket报400错误

解决nginx转发websocket报400错误

作者: 傑仔 | 来源:发表于2019-04-22 11:25 被阅读0次

    背景,nginx转发websocket在本地跟其它测试环境连接都正常,但同样的配置,在某测试环境突然连接失败,报400异常。

    failed: Error during WebSocket handshake: Unexpected response code: 400
    

    经推断,问题还是出现在nginx转发上。
    原来的nginx websokcet配置如下,跟大部分网上说的一样,只有核心的几句配置,可某测试环境就是不行

    location ~ /websocket/ {
        proxy_pass http://192.168.3.249:9090;
        proxy_http_version 1.1;
        proxy_set_header X-Client-IP $remote_addr;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
      }
    

    后查询得知,nginx websokcet 配置出了核心的这几个配置外,还有其它配置的,然后给补上,刷新测试,果然可以了。配置如下

    location ~ /websocket/ {
        proxy_pass http://host_ip:9090;
        proxy_set_header Host $host;
        proxy_http_version 1.1;
        proxy_set_header X-Client-IP $remote_addr;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 60;
        proxy_read_timeout 600;
      }
    

    其中proxy_connect_timeout 、proxy_read_timeout 属性给配置上,时间给加长点儿,原先只有30还是不行,猜测可能网络问题导致连接时间稍长,超过了默认的30就直接报400了

    相关文章

      网友评论

          本文标题:解决nginx转发websocket报400错误

          本文链接:https://www.haomeiwen.com/subject/hexygqtx.html