Nginx代理webSocket经常中断的解决方案, 如何保持长连接

标签: websocket nginx java
9112人阅读 评论(4) 收藏 举报
分类:

背景

这天气够热的,要处理的事情也够多的。。。。

想看解决的,直接 ctrl+f搜索关键字‘配置点’

开始前交代(想看原因的看这个,个人观点,不代表正确)

解说:今天用nginx反代通讯项目,发现平均1分钟左右,就会出现webSocket连接中断,然后查看了一下,是nginx出现的问题。

原因是: nginx等待你 第一次通讯和第二次通讯的时间差超过了它设定的最大等待时间,简单来说就是,超时,所以就啪的一声断了,开始上解决步骤。

解决方案一

 其实只要配置nginx.conf的对应localhost里面的这几个参数就好

1. proxy_connect_timeout;
2. proxy_read_timeout;
3. proxy_send_timeout;

解决方案二

发心跳包,原理就是在有效地再读时间内进行通讯,重新刷新再读时间

备注:配置的位置为localhost,给出简略地址

 http {
    server {
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://webscoket; 
            proxy_http_version 1.1; 
            proxy_connect_timeout 4s; #配置点1
            proxy_read_timeout 60s; #配置点2,如果没效,可以考虑这个时间配置长一点
            proxy_send_timeout 12s; #配置点3
            proxy_set_header Upgrade $http_upgrade; #这是webSocket的配置,与此篇博客无关
            proxy_set_header Connection "Upgrade"; #这是webSocket的配置,与此篇博客无关
        }
    }
}

关于配置2的解释

备注:这个是服务器对你等待最大的时间,也就是说,当你webSocket使用nginx转发的时候,用上面的配置2来说,如果60秒内没有通讯,依然是会断开的,所以,你可以按照你的需求来设定

举例:
比如说,我设置了10分钟,那么如果我10分钟内有通讯,或者10分钟内有做心跳的话,是可以保持连接不中断的,详细看个人需求

个人观点,仅供参考

关于nginx相关配置的解释,可以看一下这个

地址:http://blog.csdn.net/liujiyong7/article/details/18228915

查看评论

NGINX作为WebSocket代理

排版很差。直接复制的,请看原文https://www.nginx.com/blog/websocket-nginx/ 该网页套接字协议提供创建支持客户端和服务器之间的实时双向通信的Web应用程序的方式...
  • EdishenYA
  • EdishenYA
  • 2017-10-13 15:13:47
  • 988

Nginx实现websocket代理的方式

Nginx实现websocket代理与负载均衡
  • terminatorsong
  • terminatorsong
  • 2017-03-07 11:26:27
  • 5699

使用nginx作为websocket的proxy server

WebSocketWebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择。其为HTML5的一部分,WebSocket相较于原来开发这类app的方法来说,其能使开发更加...
  • zhx6044
  • zhx6044
  • 2015-12-12 22:44:51
  • 39799

nginx配置支持websocket

找到nginx.conf 把这两行配置加上就可以了 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "up...
  • hotthought
  • hotthought
  • 2017-06-08 13:22:22
  • 8201

WebSocket :Nginx+WebSocket内部路由策略推送服务器的实现(附可生产环境应用代码)

目录目录 项目背景 实现思路 源码地址 可优化的点 Nginx配置及说明1.项目背景前几天写了一篇WebSocket推送的博客:WebSocket :用WebSocket实现推送你必须考虑的几个问题 ...
  • shangmingtao
  • shangmingtao
  • 2017-08-03 19:22:35
  • 1434

nginx和websocket

websocket是html5中用来实现长连接的一个协议。 在同时使用nginx反向代理和websocket的时候,因为websocket的通信管道必须都要一直处于开启状态。 所以,有必要在nginx...
  • u013803262
  • u013803262
  • 2017-11-18 11:28:09
  • 870

如何配置Nginx作为WebSocket的反向代理

http {     map $http_upgrade $connection_upgrade {         default upgrade;         '' close;     } ...
  • ZhongGuoZhiChuang
  • ZhongGuoZhiChuang
  • 2016-12-01 13:13:08
  • 3378

nginx配置websocket

nginx1.0不支持websocket,所以需要升级到高版本 centos升级nginx 1、添加nginx的yum仓库,新建nginx.repo文件,内容为: [nginx]  name=ng...
  • iterJiaY
  • iterJiaY
  • 2016-04-22 13:23:35
  • 3238

关于php使用基于socket Web消息推送系统

最近公司使用到websocket异步通知客户端做相应的操作,接触到了websocket,在这里分享一些心得! 我使用的工具是基于wokman的web-msg-sender是一款web长连接推送框架,...
  • young_phper
  • young_phper
  • 2016-09-05 16:15:43
  • 8266

Nginx + Websocket 实现推送

  • 2017年08月03日 19:16
  • 67KB
  • 下载
    个人资料
    等级:
    访问量: 1万+
    积分: 220
    排名: 34万+
    文章分类
    文章存档
    最新评论