为了账号安全,请及时绑定邮箱和手机立即绑定

Nginx反向代理Websocket

标签:
Nginx

简介

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

参考

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1.1万
获赞与收藏
1545

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消