Nginx實戰反向代理WebSocket的配置實例

      網友投稿 1147 2022-05-30

      最近在工作中遇到一個需求,需要使用 nginx 反向代理websocket,經過查找一番資料,目前已經測試通過,所以這篇文章主要給大家介紹了Nginx反向代理WebSocket配置的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。

      實現方案

      采用目前比較成熟的WebSocket技術,WebSocket協議為創建客戶端和服務器端需要實時雙向通訊的webapp提供了一個選擇。其為HTML5的一部分,WebSocket相較于原來開發這類app的方法來說,其能使開發更加地簡單。大部分現在的瀏覽器都支持WebSocket,比如Firefox,IE,Chrome,Safari,Opera,并且越來越多的服務器框架現在也同樣支持WebSocket。

      WebSocket集群

      在實際的生產環境中,要求多個WebSocket服務器必須具有高性能和高可用,那么WebSocket協議就需要一個負載均衡層,NGINX從1.3開始支持WebSocket,其可以作為一個反向代理和為WebSocket程序做負載均衡。

      Nginx配置

      注:看官方文檔說 Nginx 在 1.3 以后的版本才支持 websocket 反向代理,所以要想使用支持 websocket 的功能,必須升級到 1.3 以后的版本

      NGINX通過允許一個在客戶端和后端服務器之間建立的隧道來支持WebSocket。為了NGINX發送來至于客戶端Upgrade請求到后端服務器,Upgrade和Connection頭部必須被設置明確。

      Nginx實戰之反向代理WebSocket的配置實例

      upstream wsbackend {

      server 127.0.0.1:8080;

      server 127.0.0.1:8081;

      }

      server {

      listen 80;

      server_name ws.52itstyle.com;

      location / {

      proxy_pass http://wsbackend;

      proxy_http_version 1.1;

      proxy_set_header Upgrade $http_upgrade;

      proxy_set_header Connection "upgrade";

      }

      }

      前端配置:

      $(function(){

      socket.init();

      });

      //Nginx反向代理實現websocket

      var basePath = "ws://ws.52itstyle.com//acts_competition/";

      socket = {

      webSocket : "",

      init : function() {

      if ('WebSocket' in window) {

      webSocket = new WebSocket(basePath+'webSocketServer');

      }

      else if ('MozWebSocket' in window) {

      webSocket = new MozWebSocket(basePath+"webSocketServer");

      }

      else {

      webSocket = new SockJS(basePath+"sockjs/webSocketServer");

      }

      webSocket.onerror = function(event) {

      //alert("websockt連接發生錯誤,請刷新頁面重試!")

      };

      webSocket.onopen = function(event) {

      };

      webSocket.onmessage = function(event) {

      };

      },

      sendData : function(data) {

      webSocket.send(data);

      },

      }

      最后,重啟下Nginx即可。

      反向代理服務器在支持WebSocket時面臨的挑戰

      WebSocket是端對端的,所以當一個代理服務器從客戶端攔截一個Upgrade請求,它需要去發送它自己的Upgrade請求到后端服務器,也包括合適的頭。

      因為WebSocket是一個長連接,不像HTTP那樣是典型的短連接,所以反向代理服務器需要允許連接保持著打開,而不是在它們看起來空閑時就將它們關閉。

      Nginx websocket

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Spring5.0源碼學習系列之Spring基本概述(二)
      下一篇:Vue iframe實現跨域通信
      相關文章
      亚洲精品tv久久久久久久久 | 91午夜精品亚洲一区二区三区| 国产成人精品久久亚洲| 在线看亚洲十八禁网站| 亚洲av无码无线在线观看| 亚洲人成色4444在线观看| 亚洲熟妇av午夜无码不卡| 亚洲狠狠成人综合网| 精品国产日韩久久亚洲| 亚洲精品国产摄像头| 亚洲AV一区二区三区四区| 日韩国产精品亚洲а∨天堂免| 国产精品久久久久久亚洲影视 | 亚洲精品精华液一区二区| 亚洲第一成年免费网站| 亚洲成aⅴ人片久青草影院按摩| 亚洲风情亚Aⅴ在线发布| 精品久久亚洲一级α| 亚洲国产一区视频| 中文字幕中韩乱码亚洲大片| 亚洲一区二区三区香蕉| 久久久久亚洲精品美女| 久久丫精品国产亚洲av不卡| 亚洲黄色在线视频| 亚洲avav天堂av在线网爱情| 在线亚洲高清揄拍自拍一品区| 亚洲人成无码网站在线观看| 国产亚洲蜜芽精品久久| 4338×亚洲全国最大色成网站| 亚洲综合无码精品一区二区三区 | 国产AV无码专区亚洲Av| 亚洲丝袜美腿视频| 亚洲1区1区3区4区产品乱码芒果 | 亚洲娇小性色xxxx| 亚洲av日韩av永久无码电影| 亚洲福利精品一区二区三区 | 在线亚洲午夜片AV大片| 一本色道久久88亚洲综合| 国产亚洲精品AA片在线观看不加载| 亚洲日产无码中文字幕| 亚洲视频在线视频|