分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

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

发布时间:2023-09-06 01:56责任编辑:苏小强关键词:暂无标签

背景

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

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

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

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

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

解决方案一

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

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

解决方案二

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

备注:配置的位置为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的配置,与此篇博客无关 ???????} ???}}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

关于配置2的解释

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

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

http://nginx.org/en/docs/http/websocket.html

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

原文地址:https://www.cnblogs.com/sos-blue/p/9091520.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved