国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Nginx > 正文

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

2024-08-30 12:22:06
字體:
來源:轉載
供稿:網友
最近在工作中遇到一個需求,需要使用 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頭部必須被設置明確。

代碼實例:

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反向代理實現websocketvar 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那樣是典型的短連接,所以反向代理服務器需要允許連接保持著打開,而不是在它們看起來空閑時就將它們關閉。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網之家的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大田县| 舞钢市| 土默特左旗| 阿巴嘎旗| 金华市| 孝昌县| 湖南省| 宣汉县| 开原市| 合阳县| 东乡| 盐城市| 吴江市| 满洲里市| 廊坊市| 慈利县| 榆树市| 宜兰县| 绵阳市| 石阡县| 舟山市| 普兰店市| 元阳县| 邢台县| 武汉市| 武威市| 望都县| 海伦市| 邵阳市| 兴仁县| 修文县| 苍梧县| 萍乡市| 连江县| 沽源县| 安化县| 溧水县| 峡江县| 米易县| 南丹县| 成武县|