天天看點

從配置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/;
        }
    }
           

轉載于:https://www.cnblogs.com/zhouqi666/p/10138377.html

繼續閱讀