Nginx反向代理Websocket

简介

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配置的问题,在此记录下解决方案。

参考

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,050评论 19 139
  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 81,526评论 21 356
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,916评论 24 1,002
  • 2010年7月31日 今早乘坐大巴从威海出发,准备前往青岛,在路上导游把我们带到了威海的大型土特产超市,我们进去买...
    听雨聆声阅读 1,535评论 0 0
  • 自打我放弃考研之后,我竟然发现我的疆域变广了很多!从伯凡老师那学到很多做人的道理。尤其是做那些在别人眼中无用的事情...
    芒曼阅读 3,362评论 0 0

友情链接更多精彩内容