Nginx代理webSocket经常中断的解决方案, 如何保持长连接
生活随笔
收集整理的這篇文章主要介紹了
Nginx代理webSocket经常中断的解决方案, 如何保持长连接
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
為什么80%的碼農(nóng)都做不了架構師?>>> ??
背景
這天氣夠熱的,要處理的事情也夠多的。。。。想看解決的,直接 ctrl+f搜索關鍵字‘配置點’##
開始前交代(想看原因的看這個,個人觀點,不代表正確)##
解說:今天用nginx反代通訊項目,發(fā)現(xiàn)平均1分鐘左右,就會出現(xiàn)webSocket連接中斷,然后查看了一下,是nginx出現(xiàn)的問題。
原因是:nginx等待你 第一次通訊和第二次通訊的時間差,超過了它設定的最大等待時間,簡單來說就是,超時,所以就啪的一聲斷了,開始上解決步驟。
解決方案一
其實只要配置nginx.conf的對應localhost里面的這幾個參數(shù)就好解決方案二
發(fā)心跳包,原理就是在有效地再讀時間內(nèi)進行通訊,重新刷新再讀時間備注:配置的位置為localhost,給出簡略地址
http {server {location / {root html;index index.html index.htm;proxy_pass http://webscoket; proxy_http_version 1.1; proxy_connect_timeout 4s; #配置點1proxy_read_timeout 60s; #配置點2,如果沒效,可以考慮這個時間配置長一點proxy_send_timeout 12s; #配置點3proxy_set_header Upgrade $http_upgrade; #這是webSocket的配置,與此篇博客無關proxy_set_header Connection "Upgrade"; #這是webSocket的配置,與此篇博客無關}} }關于配置2的解釋
備注:這個是服務器對你等待最大的時間,也就是說,當你webSocket使用nginx轉發(fā)的時候,用上面的配置2來說,如果60秒內(nèi)沒有通訊,依然是會斷開的,所以,你可以按照你的需求來設定
舉例: 比如說,我設置了10分鐘,那么如果我10分鐘內(nèi)有通訊,或者10分鐘內(nèi)有做心跳的話,是可以保持連接不中斷的,詳細看個人需求 感謝評論區(qū) @zigzagroad 的指正,希望可以幫到你們,如果有更好的方式,麻煩分享一下,謝謝
關于nginx相關配置的解釋,可以看一下這個
地址:http://blog.csdn.net/liujiyong7/article/details/18228915
轉載于:https://my.oschina.net/grkj/blog/1499744
總結
以上是生活随笔為你收集整理的Nginx代理webSocket经常中断的解决方案, 如何保持长连接的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不怕被 AirTag 追踪了,BVS 推
- 下一篇: Nginx —— 检查配置文件ngi