Nginx學習之反向 ProxyWebSocket配置執行個體

來源:互聯網
上載者:User

標籤:alert   通訊   window   通過   var   ror   ase   頭部   方法   

寫在開始去年,做過一款競賽打分的APP。具體需求,同組教師之間可以相互連信,及時通知同組人員,其他組員做了那些操作(當然,這隻是針對特定操作)寫在開始去年,做過一款競賽打分的APP。具體需求,同組教師之間可以相互連信,及時通知同組人員,其他組員做了那些操作(當然,這隻是針對特定操作)。實現方案採用目前比較成熟的WebSocket技術,WebSocket協議為建立用戶端和伺服器端需要即時雙向通訊的webapp提供了一個選擇。其為HTML5的一部分,WebSocket相較於原來開發這類app的方法來說,其能使開發更加地簡單。大部分現在的瀏覽器都支援WebSocket,比如Firefox,IE,Chrome,Safari,Opera,並且越來越多的伺服器架構現在也同樣支援WebSocket。WebSocket叢集在實際的生產環境中,要求多個WebSocket伺服器必須具有高效能和高可用,那麼WebSocket協議就需要一個負載平衡層,NGINX從1.3開始支援WebSocket,其可以作為一個反向 Proxy和為WebSocket程式做負載平衡。Nginx配置註:看官方文檔說 Nginx 在 1.3 以後的版本才支援 websocket 反向 Proxy,所以要想使用支援 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反向 Proxy實現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) {http://www.dajiafa8.com webSocket.send(data); },}最後,重啟下Nginx即可。反向 Proxy伺服器在支援WebSocket時面臨的挑戰WebSocket是端對端的,所以當一個Proxy 伺服器從用戶端攔截一個Upgrade請求,它需要去發送它自己的Upgrade請求到後端伺服器,也包括合適的頭。因為WebSocket是一個長串連,不像HTTP那樣是典型的短串連,所以反向 Proxy伺服器需要允許串連保持著開啟,而不是在它們看起來空閑時就將它們關閉。

Nginx學習之反向 ProxyWebSocket配置執行個體

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.