nginx實現反向代理與負載均衡

nginx在LB Cluster集羣中也可以扮演一定的角色,即反向代理與負載均衡。在一個Web服務中,來自客戶端的請求可以經由nginx服務器轉發至後端服務器,並且按照一定的算法實現負載均衡。




1.反向代理

    1)在192.168.10.17/24與192.168.10.77/24主機上安裝nginx,提供web服務。

    編輯兩臺主機的主頁文件內容分別爲

        inode17 page 和inode77 page

    2)主機172.16.10.66提供nginx的反向代理服務

    爲了與後端主機進行通信,此主機需要配置兩個IP接口,另一個爲192.168.10.66/24

        ifconfig eth0:0 192.168.10.66/16

    打開nginx的配置文件,在location段中添加一行

    proxy_pass  http://192.168.10.17; ##將客戶端請求反代至後端服務器

    注:proxy_pass後面的路徑不帶uri時,其會將location的uri傳遞給後端主機;當proxy_pass後面的路徑是一個uri時,其會將location的uri替換爲proxy_pass的uri;

    3)打開網頁測試

        http://172.16.10.66 

2.提供緩存

    1)在172.16.10.66主機上,打開nginx配置文件,在http{}段添加下列行,指明緩存路徑,名稱等相關信息

    proxy_cache_path   /var/cache/nginx/proxy_cache levels=1:2:1 keys_zone=pcache:10m;

在server{}段中添加下列幾行內容

      proxy_cache  pcache;  ##引用上述定義的緩存

       proxy_cache_key  $request_uri;  ## 緩存的關鍵字

       proxy_cache_valid  200 302 1m;  ## 緩存元素,指明要緩存的資源

       proxy_cache_valid  301 1h;

       proxy_cache_valid  any 1h;

    2)檢測語法錯誤,並重新載入配置文件

    3)在另一臺主機上使用ab命令可以檢測添加緩存前後響應速度

3.負載均衡

nginx通過upstream模塊實現後端服務器的負載均衡

1)在172.16.10.66主機上,打開nginx配置文件,在http段定義upstream{}上下文

    upstream test_lb {

        server 192.168.10.17 weight=1; ## 指向後端服務器,權重默認爲1

        server 192.168.10.77 weight=2; 

    }    

注:可以在上述upsteam中定義算法

    least_conn  最少連接調度算法

    least_time header|last_byte;   最短平均響應時間和最少連接

    ip_hash  源地址hash算法,將同一ip地址的訪問發往同一服務器

    hash key [consistent] 基於指定的key的hash表實現請求調度

        如   hash $request_uri consistent

            hash $remote_addr

            hash $cookie_name

2)更改location中proxy_pass爲:

    proxy_pass  http://test_lb;## 已定義的upstream 

3)檢測語法錯誤,並重新載入配置文件

4)在客戶機上進行測試

輸入for i in `seq 10` ;do curl 172.16.10.66 ;done

可以看到兩臺服務器頁面比例爲1:2


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章