## 使用nginx實現websocket的負載均衡
當web應用訪問量過大時,我們就需要做負載均衡,將同一個域名的請求分散到不同的服務器上。nginx就可以做到。它可以按照輪詢、ip哈希、URL哈希、權重等多種方式對后端服務器做負載均衡。但是分配到不同的機器上后,如果請求是有狀態的,比如有些頁面需要用戶登錄之后才能訪問,我們就需要保證單個用戶請求落在一臺機器上或者實現多臺機器之間的session共享,那樣才能保持登錄狀態。而對于websocket這種長連接協議,nginx負載均衡之后能否保持連接狀態呢,我們接下來做一些測試。
### nginx 負載均衡配置
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
//通過IP哈希配置
ip_hash;
server 127.0.0.1:9901 weight=2;
server 127.0.0.1:9902 weight=3;
}
}
server {
listen 8080;
location /ws {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
nginx負載均衡能夠支持websocket這種長連接協議
測試不多寫