從配置websocket理解nginx


原文地址:
http://www.niu12.com/article/2
今天由於寫了一個簡單的基於h5 websoceket的聊天室,再本地都是好好了.     但是上到服務器后就發現無法行的通,
查了了解到nginx需要進行特殊的配置才能支持websocket.

linux安裝nginx后,在/etc/nginx/conf.d/chat.niu12.com.conf來配置
/*********************************************************/
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

server {
listen 80;
server_name chat.niu12.com;

location / {
proxy_pass http://127.0.0.1:8889;
# 支持websocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
/*********************************************************/

map指令的作用:
根據客戶端請求中$http_upgrade 的值,來構造改變$connection_upgrade的值
即根據變量$http_upgrade的值創建新的變量$connection_upgrade,

創建的規則就是{}里面的東西。其中的規則沒有做匹配,因此使用默認的.
即 $connection_upgrade 的值會一直是 upgrade。然后如果 $http_upgrade為空字符串的話,
那值會是 close。

以上是nginx配置websocket,下面是由於自己在配置的時候發現對nginx還很生疏,就進行學習

什么是反向代理?
1、 proxy_pass:配置反向代理的路徑。   需要注意的是如果 proxy_pass 的 url 最后為 /,則表示絕對路徑。
否則(不含變量下)表示相對路徑,所有的路徑都會被代理過去

反向代理是指以代理服務器來接受網絡上的連接請求,   然后將請求轉發給內部網絡上的服務器,
並將從服務器上得到的結果返回給請求連接的客戶端,   此時代理服務器對外就表現為一個反向代理服務器。



什么是負載均衡?
2、 upstream:配置負載均衡,upstream 默認是以輪詢的方式進行負載,     另外還支持四種模式,分別是:

(1)weight:權重,指定輪詢的概率,weight 與訪問概率成正比

(2)ip_hash:按照訪問 IP 的 hash 結果值分配

(3)fair:按后端服務器響應時間進行分配,響應時間越短優先級別越高

(4)url_hash:按照訪問 URL 的 hash 結果值分配
其背后一般有多台 server,系統會根據配置的策略   (例如 Nginx 有提供四種選擇)來進行動態調整,
盡可能的達到各節點均衡,從而提高系統整體的吞吐量和快速響應

eg:

upstream api.niu12.com {
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}

server {
listen 80;
server_name api.niu12.com;

location / {
proxy_pass http://api.niu12.com/;
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM