青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Fork me on GitHub
隨筆 - 215  文章 - 13  trackbacks - 0
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456


專注即時(shí)通訊及網(wǎng)游服務(wù)端編程
------------------------------------
Openresty 官方模塊
Openresty 標(biāo)準(zhǔn)模塊(Opm)
Openresty 三方模塊
------------------------------------
本博收藏大部分文章為轉(zhuǎn)載,并在文章開(kāi)頭給出了原文出處,如有再轉(zhuǎn),敬請(qǐng)保留相關(guān)信息,這是大家對(duì)原創(chuàng)作者勞動(dòng)成果的自覺(jué)尊重!!如為您帶來(lái)不便,請(qǐng)于本博下留言,謝謝配合。

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

相冊(cè)

Awesome

Blog

Book

GitHub

Link

搜索

  •  

積分與排名

  • 積分 - 221316
  • 排名 - 117

最新評(píng)論

閱讀排行榜

http://www.oschina.net/translate/websocket-nginx
WebSocket 協(xié)議給我們提供了一個(gè)創(chuàng)建可以支持客戶端和服務(wù)端進(jìn)行雙向?qū)崟r(shí)通信的web應(yīng)用程序的方法。相比之前使用的方法,WebSocket(作為HTML5的一部分)可以使我們更容易開(kāi)的發(fā)出這種類型的應(yīng)用程序。絕大多數(shù)的現(xiàn)代瀏覽器都支持WebSocket,包括火狐,IE,Chrome,Safari以及Opera等,同時(shí),越來(lái)越多的服務(wù)端框架也開(kāi)始支持WebSocket了。
對(duì)于企業(yè)應(yīng)用來(lái)說(shuō),我們需要多個(gè)WebSocket服務(wù)器來(lái)保障性能和高可用性,因此我們迫切的需要對(duì)WebSocket協(xié)議進(jìn)行負(fù)載均衡。NGINX自從1.3版本就開(kāi)始支持WebSocket了,并且可以為WebSocket應(yīng)用程序做反向代理和負(fù)載均衡。
WebSocket 和HTTP協(xié)議不同,但是WebSocket中的握手和HTTP中的握手兼容,它使用HTTP中的Upgrade協(xié)議頭將連接從HTTP升級(jí)到WebSocket。這使得WebSocket程序可以更容易的使用現(xiàn)已存在的基礎(chǔ)設(shè)施。例如,WebSocket可以使用標(biāo)準(zhǔn)的HTTP端口 80 和 443,因此,現(xiàn)存的防火墻規(guī)則也同樣適用。
一個(gè)WebSockets的應(yīng)用程序會(huì)在客戶端和服務(wù)端保持一個(gè)長(zhǎng)時(shí)間工作的連接。用來(lái)將連接從HTTP升級(jí)到WebSocket的HTTP升級(jí)機(jī)制使用HTTP的Upgrade和Connection協(xié)議頭。反向代理服務(wù)器在支持WebSocket方面面臨著一些挑戰(zhàn)。一項(xiàng)挑戰(zhàn)是WebSocket是一個(gè)hop-by-hop協(xié)議,所以,當(dāng)代理服務(wù)器攔截到一個(gè)客戶端發(fā)來(lái)的Upgrade請(qǐng)求時(shí),它(指服務(wù)器)需要將它自己的Upgrade請(qǐng)求發(fā)送給后端服務(wù)器,也包括合適的請(qǐng)求頭。此外,由于WebSocket連接是長(zhǎng)時(shí)間保持的,所以代理服務(wù)器需要允許這些連接處于打開(kāi)狀態(tài),而不是像對(duì)待HTTP使用的短連接那樣將其關(guān)閉。
NGINX 通過(guò)在客戶端和后端服務(wù)器之間建立起一條隧道來(lái)支持WebSocket。為了使NGINX可以將來(lái)自客戶端的Upgrade請(qǐng)求發(fā)送給后端服務(wù)器,Upgrade和Connection的頭信息必須被顯式的設(shè)置。如下所示:
location /wsapp/ {
    proxy_pass http://wsbackend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}
一旦我們完成以上設(shè)置,NGINX就可以處理WebSocket連接了。
NGINX Websockets 舉例
這里有一個(gè)展示NGINX如何為WebSocket做代理的實(shí)例。這個(gè)例子將會(huì)使用node.js上的一個(gè)實(shí)現(xiàn)了WebSocket的模塊——ws。這個(gè)示例在Ubuntu 13.10 和 CentOS 6.5上測(cè)試通過(guò),但對(duì)于其他系統(tǒng)來(lái)說(shuō)也許需要稍作修改。就這個(gè)例子來(lái)說(shuō),WebSocket服務(wù)器的IP地址是192.168.100.10,NGINX服務(wù)器的IP地址是192.168.100.20。如果你還沒(méi)有安裝node.js和npm,你可以通過(guò)以下命令安裝:
對(duì) Debian/Ubuntu 來(lái)說(shuō):
sudo apt-get install nodejs npm
對(duì) RHEL/CentOS 來(lái)說(shuō):
sudo yum install nodejs npm
在Ubuntu上,node.js會(huì)被安裝為 "nodejs",在CentOS中被會(huì)安裝為"node"。我們?cè)谶@例子中統(tǒng)一使用"node",所以,我們將會(huì)在Ubuntu上創(chuàng)建一個(gè)連接來(lái)允許我們使用“node”:
ln -s /usr/bin/nodejs /usr/local/bin/node
然后安裝 ws:
sudo npm install ws
注意:如果你得到了一個(gè)錯(cuò)誤:“Error: failed to fetch from registry: ws” ,那么運(yùn)行下面的命令應(yīng)該能解決這個(gè)問(wèn)題:
sudo npm config set registry http://registry.npmjs.org/
接下來(lái),你可以再次運(yùn)行 sudo npm install ws
ws命令來(lái)自/root/node_modules/ws/bin/wscat,我們將會(huì)把它當(dāng)做我們的客戶端,但是我們需要?jiǎng)?chuàng)建一個(gè)程序來(lái)做我們的服務(wù)端。將下面的代碼保存到一個(gè)server.js文件中:
console.log("Server started");
var Msg = '';
var WebSocketServer = require('ws').Server
    , wss = new WebSocketServer({port: 8010});
    wss.on('connection', function(ws) {
        ws.on('message', function(message) {
        console.log('Received from client: %s', message);
        ws.send('Server received from client: ' + message);
    });
 });
這個(gè)程序可以通過(guò)下面的命令執(zhí)行:
node server.js
該程序會(huì)輸出一條初始化消息“Server started”,之后監(jiān)聽(tīng)8010端口,等待客戶端的連接。它會(huì)處理收到的所有請(qǐng)求,并且將接收到的消息輸出在控制臺(tái),之后向客戶端返回一條包含該消息的消息。我們希望NGINX去代理這些請(qǐng)求,通過(guò)下面的配置便可實(shí)現(xiàn):
map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}
upstream websocket {
    server 192.168.100.10:8010;
}
server {
    listen 8020;
    location / {
        proxy_pass http://websocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
}
上面的配置會(huì)使NGINX監(jiān)聽(tīng)8020端口,并把接收到的任何請(qǐng)求傳遞給后端的WebSocket服務(wù)器以便恰當(dāng)?shù)奶幚鞼ebSocket協(xié)議。我們可以使用wscat作為客戶端來(lái)測(cè)試一下:
/root/node_modules/ws/bin/wscat –connect ws://192.168.100.20:8020
上面的命令會(huì)通過(guò)NGINX代理服務(wù)器和WebSocket服務(wù)器建立連接,你可以輸入你想要發(fā)送給服務(wù)器的消息,之后服務(wù)器會(huì)返回一條消息。每當(dāng)你輸入一條消息,你應(yīng)該可以在服務(wù)端看到該消息的輸出,之后在客戶端會(huì)顯示一條來(lái)自服務(wù)端的消息。
這是一個(gè)交互示例:
Server: Client:
$ node server.js
Server started
wscat –connect ws://192.168.100.20:8020
Connected (press CTRL+C to quit)
> Hello
Received from client: Hello
< Server received from client: Hello
由此我們可以看到服務(wù)端與客戶端能夠通過(guò)作為代理的NGINX通信, 而且消息可以持續(xù)進(jìn)行雙向傳輸直到客戶端或服務(wù)端斷開(kāi)連接。為了能使NGINX正確處理WebSocket, 只需正確地設(shè)置消息頭來(lái)處理更新從http到WebSocket連接的Upgrade請(qǐng)求。
更多信息請(qǐng)參見(jiàn):
posted on 2017-06-03 14:35 思月行云 閱讀(1062) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Nginx\Openresty
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美高清一区| 韩日视频一区| 国产精品99久久99久久久二8 | 亚洲国产日韩欧美| 亚洲精品一区久久久久久| 欧美激情视频在线播放| 一区二区三区日韩在线观看| 翔田千里一区二区| 国产在线精品一区二区夜色| 欧美在线播放一区二区| 久久免费高清| 亚洲国产欧美日韩| 免费欧美日韩国产三级电影| 亚洲高清在线精品| 亚洲一二三级电影| 国产精品伊人日日| 欧美中文字幕视频在线观看| 久久日韩粉嫩一区二区三区| 亚洲第一主播视频| 欧美日韩八区| 亚洲永久精品大片| 久热精品视频在线观看一区| 亚洲国产日韩欧美在线99| 久久精品国产综合| 亚洲盗摄视频| 国产精品99久久久久久宅男| 国产精品视频区| 久久噜噜噜精品国产亚洲综合| 欧美高清自拍一区| 亚洲影音先锋| 国产综合色精品一区二区三区| 久久综合色综合88| 日韩视频欧美视频| 久久久久久久久岛国免费| 亚洲观看高清完整版在线观看| 欧美国产专区| 亚洲一区二区三区精品动漫| 久久久久九九视频| 亚洲精品久久久久久久久久久久 | 亚洲一区二区在| 老司机67194精品线观看| 亚洲精品乱码久久久久| 欧美三日本三级三级在线播放| 欧美专区在线观看一区| 91久久精品国产91久久| 欧美一区二区视频在线观看| 精品二区久久| 欧美日韩国产综合视频在线观看中文 | 在线一区二区三区做爰视频网站 | 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美综合第一页| 日韩特黄影片| 免费不卡视频| 亚洲欧美综合v| 亚洲电影下载| 国产精品揄拍500视频| 欧美国产精品va在线观看| 午夜精品成人在线| 亚洲精品乱码久久久久久蜜桃麻豆 | 久久国产色av| 亚洲精品一区二区三区蜜桃久| 国产欧美一区二区精品仙草咪| 欧美精品一区二区视频| 久久精品卡一| 亚洲欧美在线视频观看| 亚洲麻豆一区| 亚洲国产91| 免费一区视频| 久久国内精品视频| 亚洲综合成人在线| 亚洲精品午夜| 亚洲国产天堂久久综合| 国产一区在线观看视频| 国产精品日韩一区| 欧美午夜电影网| 欧美精品一区二区三区很污很色的| 久久久久一区二区三区四区| 午夜免费日韩视频| 在线视频日韩精品| 99爱精品视频| 亚洲精品中文字幕在线| 亚洲电影免费在线| 欧美承认网站| 欧美成人一区二区三区在线观看| 久久久国产视频91| 久久久久.com| 久久久久91| 久久久蜜桃一区二区人| 久久福利一区| 久久久另类综合| 久久久久国产精品一区二区| 久久久九九九九| 久久亚洲春色中文字幕| 久久激情网站| 久久五月天婷婷| 免费观看成人www动漫视频| 麻豆国产精品va在线观看不卡| 久久久久久久久久久久久女国产乱 | 欧美专区一区二区三区| 欧美一区三区三区高中清蜜桃| 欧美一级视频精品观看| 久久精品盗摄| 老司机午夜精品视频在线观看| 久久综合狠狠| 久久精品成人| 欧美亚洲免费| 久久国产直播| 欧美一区二区三区另类 | 国产一区二区你懂的| 国内精品久久久久久久影视麻豆| 影音先锋日韩资源| 亚洲国产小视频在线观看| 99re亚洲国产精品| 午夜一级久久| 美女网站在线免费欧美精品| 亚洲国产乱码最新视频| 99av国产精品欲麻豆| 亚洲欧美在线磁力| 理论片一区二区在线| 欧美日韩国产一中文字不卡| 国产精品九九| 尤物yw午夜国产精品视频| 日韩性生活视频| 欧美一区二区在线看| 免费日韩av片| 一区二区三区国产精华| 欧美自拍偷拍午夜视频| 欧美国产日韩xxxxx| 国产精品一区二区在线| 亚洲国产精品传媒在线观看 | 国内精品久久久久影院 日本资源| 亚洲国产综合视频在线观看| 亚洲午夜电影| 毛片精品免费在线观看| 日韩一级不卡| 欧美一区二区国产| 欧美福利视频| 国产视频精品xxxx| 99国产精品视频免费观看一公开| 欧美伊人精品成人久久综合97 | 欧美freesex8一10精品| 亚洲毛片一区| 久久综合色播五月| 国产精品一区免费在线观看| 亚洲人成毛片在线播放| 久久精品国产久精国产思思| 亚洲乱码国产乱码精品精天堂| 欧美在线999| 欧美性猛交xxxx免费看久久久| 狠狠狠色丁香婷婷综合久久五月| 99国产精品久久久久久久久久| 久久久蜜臀国产一区二区| 99国产精品99久久久久久| 久久综合成人精品亚洲另类欧美| 国产精品久久一区二区三区| 亚洲日本成人在线观看| 久久久久久久尹人综合网亚洲| 亚洲精品综合精品自拍| 久久综合伊人| 国产字幕视频一区二区| 亚洲夜晚福利在线观看| 亚洲激情一区二区| 久久国产天堂福利天堂| 国产精品一区二区三区四区五区| 99re热这里只有精品免费视频| 两个人的视频www国产精品| 亚洲视频在线观看一区| 欧美高清不卡在线| 国产亚洲成av人在线观看导航| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美一区二区三区视频免费播放| 亚洲国产91| 久久精品在线播放| 欧美色中文字幕| 在线午夜精品自拍| 亚洲免费成人av| 欧美另类女人| 一区二区动漫| 日韩亚洲国产精品| 欧美日韩亚洲一区二区三区四区| 亚洲狼人综合| 最新国产乱人伦偷精品免费网站 | 免费亚洲网站| 亚洲国产一区二区三区在线播| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美一区2区三区4区公司二百| 国产亚洲高清视频| 欧美成人小视频| 欧美日韩国产综合视频在线观看 | 亚洲国产欧美日韩另类综合| 亚洲韩国日本中文字幕| 国产精品xvideos88| 久久久亚洲一区| 欧美粗暴jizz性欧美20| 亚洲欧美日韩国产成人| 久久久精品久久久久| 99视频+国产日韩欧美| 亚洲免费在线| 亚洲精品欧美激情| 亚洲欧美日韩综合aⅴ视频|