美文网首页Nginx高端成长之路
Nginx反向代理Websocket

Nginx反向代理Websocket

作者: Real_man | 来源:发表于2017-12-05 11:53 被阅读40次

    简介

    Websocket协议提供了一种方式可以让客户端与服务器相互通信,现代很多浏览器都支持Websocket,后端的很多开发框架也大多支持Websocket。在生产环境中,经常需要用到Nginx作为反向代理,有时候需要代理后端的Websocket服务。
    我们对Nginx进行一些配置,才能支持后端的Websocket。

    具体配置

    1、直接配置

    location /chat/ {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    

    2、更稳定的配置

    http {
        map $http_upgrade $connection_upgrade {
            default upgrade;
            ''      close;
        }
    
        server {
            ...
    
            location /chat/ {
                proxy_pass http://backend;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
            }
        }
    }
    

    默认情况下,60s之内,代理服务器未发送任何数据的话连接会被关闭。我们可以设置 proxy_read_timeout 指令,来进行调整。

    小结

    前段时间在使用Websocket的时候,后端使用的Spring Boot,在本地开发不会报任何错,放到生产环境上,生产环境使用Nginx做反向代理,会提示不支持的Websocket版本。则猜想到应该是Nginx配置的问题,在此记录下解决方案。

    参考

    相关文章

      网友评论

        本文标题:Nginx反向代理Websocket

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