Nginx 可以做到請求負載平衡(Load balancing),情境一般來說如下圖:

Nginx 負載平衡

面對大量請求,透過 Nginx 作為轉運中心,分派請求給後面的分流主機,來舒緩大量的瀏覽者壓力,這就是滿基本應用的操作,詳細設定只要透過「Nginx Reverse Proxy 反向代理」等關鍵字,就能找到一堆教學。

那如果是下圖這種代理 Proxy 做法會怎麼設定呢?

Nginx 反向代理

附載平衡的設計是把流量分散到不同主機上去減輕主機壓力,而這張圖的架構是透過分流主機,同時間去對目標網站請求。

對,就是一種 DDoS 。標題不能寫的太露骨 XD

其實這樣的做法真要拿來幹壞事成本大概比找免洗 proxy 貴很多,這個需求是如果目標網站有針對用戶 IP 以及請求數做限制,可以透過這招繞路來避開。所以原需求其實是:突破目標主機每分鐘 xxx 請求數的做法。

有做過類似事情的人應該會發現,其實前段的 Nginx 那邊可以靠自己程式去分配請求輪流發,但缺點就是管理不容易,所以透過一個主要入口的 Nginx 來處理會比較輕鬆。

分流主機的設定如下:

server
    {
        listen 80;
        #listen [::]:80;
        server_name ch1.mxp.tw ;

        location / {
                proxy_pass https://www.mxp.tw/;
        }

        access_log  /path/to/log/ch1.mxp.tw.log;
    }

主入口 Nginx 設定如下:

upstream chlb {
    server 10.1.1.1 weight=2; 
    server 10.1.1.2 weight=2; 
    server 10.1.1.3 weight=2; 
}

server
    {
        listen 80;
        listen [::]:80;
        server_name entry.mxp.tw ;

        location / {
                proxy_set_header Host ch1.mxp.tw;
        #       proxy_set_header X-Real-IP $remote_addr;
        #       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #       proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass http://chlb;
        }
        access_log  /path/to/log/entry.mxp.tw.log;
    }

設定好後,程式只需要針對 enter.mxp.tw 發請求,Nginx 這邊會向 chlbupstream 群組來轉發,而代理的分流站只需要設定檔案有套用,也會把請求再轉發到指定的網站(這邊設定範例就是 www.mxp.tw )。

Facebook 外掛功能


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[//////////____30%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *