原文地址:
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/;
}
}