Nginx服務器 之反向代理與負載均衡

1、反向代理

正向代理:nginx

客戶端要獲取的資源就在服務器上,客戶端請求的資源路徑就是最終響應資源的服務器路徑,這就是正向代理。正向代理的特色:就是咱們明確知道要訪問哪一個網站地址。算法

反向代理:後端

 

客戶端想獲取服務器集羣中(服務1,服務2,服務3 他們的資源相同)中的資源,可是客戶端沒法與該服務器集羣創建鏈接,但咱們能夠與另外一臺服務器(代理服務器)創建鏈接且該服務器能獲取服務器集羣中的資源。這個時候客戶端就能夠經過請求代理服務器,獲取想要的資源,但客戶端並不知道給他資源的是哪一個服務器。這種方式就是反向代理。瀏覽器

2、負載均衡

  當一臺服務器的單位時間內的訪問量越大的時候,服務器的壓力會越大。當一臺服務器壓力大得超過自身的承受能力的時候,服務器會崩潰。爲了不服務器崩潰,讓用戶有更好地體驗,咱們一般經過負載均衡的方式來分擔服務器的壓力。那麼什麼是負載均衡呢?咱們經過創建不少個服務器,把這些服務器組成一個服務器集羣,而後,當用戶訪問咱們網站的時候,先訪問一箇中間服務器,再讓這個中間服務器在服務器集羣中選擇一個壓力較小的服務器,而後將該訪問請求引入該選擇的服務器。這樣,用戶的每次訪問,都會保證服務器集羣中的每一個服務器的壓力趨於平衡,分擔了服務器壓力,避免了服務器崩潰的狀況。負載均衡就是採用反向代理的思想。服務器

3、Nginx中負載均衡的實現

Nginx是一款能夠經過反向代理實現負載均衡的服務器,使用Nginx服務實現負載均衡的時候,用戶的訪問首先會訪問到Nginx服務器,而後Nginx服務器再從服務器集羣表中選擇壓力較小的服務器,而後將該訪問請求引向該服務器。若服務器集羣中的某個服務器崩潰,那麼從待選服務器列表中將該服務器刪除,也就是說一個服務器假如崩潰了,那麼Nginx就確定不會將訪問請求引入該服務器了。併發

一、建立fzjh.conf配置文件負載均衡

  在/usr/local/nginx/conf下建立fzjh.conf文件,文件內容以下:高併發

複製代碼

user  nobody;
worker_processes  2;
events {
    worker_connections  1024;
}
http{
   #=upstream設置負載均衡的待選服務器列表,在運行中若是有服務器崩潰那該服務器就會在該列表中移除
    upstream mypro{
        server 219.133.55.36;#中國萬維網
        server 115.239.210.27;#百度的ip
    }
    server{
        listen 8080;
        #====== 對ngnix更目錄作負載均衡===
        location / {
           #==選擇要代理的服務器要與upstream對應==========
            proxy_pass http://mypro;
        }
    }
}

複製代碼

二、加載fzjh.conf配置文件測試

 執行命令: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/fzjh.conf網站

三、測試是否成功  

  在這裏咱們的負載均衡待選服務器列表是百度和中國萬維網,也就說咱們訪問個人主機名+8080 就能夠進行測試,若是頁面在百度與中國萬維網中切換,就表示成功。

  個人主機是個人阿里元服務器你們能夠試試:http://www.jalja.org:8080

4、Upstream模塊詳解

 
Upstream模塊:該模塊是Nginx服務器的一個重要模塊。Upstream模塊實如今輪詢和客戶端ip之間實現後端的負載均衡。經常使用的指令有ip_hash指令、server指令和upstream指令等。該模塊主要進行輪詢算法。upstream指令主要是用於設置一組能夠在proxy_pass和fastcgi_pass指令中使用額代理服務器,默認負載均衡方式爲輪詢。

 ip_hash指令:在負載均衡系統中,假如用戶在某臺服務器上登陸,那麼若是該用戶第二次請求的時候,由於咱們是負載均衡系統,每次請求都會從新定位到服務器集羣中的一個服務器,那麼此時若是將已經登陸服務器A的用戶再定位到其餘服務器,顯然不妥。故而,咱們能夠採用ip_hash指令解決這個問題,若是客戶端請求已經訪問了服務器A並登陸,那麼第二次請求的時候,會將該請求經過哈希算法自動定位到該後端服務器中。簡單說ip_hash指令能夠實現當用戶使用同一瀏覽器在A服務器登陸後,那他後續的全部請求都在同一服務器中進行,Nginx代理服務器不會將他的請求分配到其餘服務器上,以此規避用戶登陸信息在不一樣服務器間流轉的問題,從而保證用戶只需登陸一次。

ip_hash的使用:在fzjh.conf配置文件中開啓該功能

server指令: 主要用於指定服務器的名稱和參數。

使用:在fzjh.conf配置文件中開啓該功能

 注意:在實際開發中weight不要與ip_hash同時使用

負載均衡不一樣實現方式的優缺點:假如使用硬件的方式實現負載均衡,那麼中間的轉發機構就是硬件,這個時候運行的效率很是高,可是對應的成本也很是高。若是咱們採用軟件的方式來實現負載均衡,那麼中間的轉發機構就是軟件,這個時候,運行效率不如硬件,可是成本相對來講低得多。而使用Nginx服務器實現負載均衡,那麼就是經過軟件的方式來實現負載均衡,而且Nginx自己支持高併發等。故而使用Nginx服務器實現負載均衡,能大大節約企業的成本,而且因爲Nginx是服務器軟件,其執行效率也是很是高。

相關文章
相關標籤/搜索