Nginx反向代理、負載均衡的實現

概述:

    上篇介紹了Nginx作為web服務器的一些常用配置的說明,但是在實際生產環境中,Nginx更多是作為前端的負載均衡器,反代前端用戶請求到后端真實的web服務器上,完成LNAMP的組合的方式存在。本篇就介紹一些Nginx作為http的反向代理和前端負載均衡調度器的一些常用配置,具體包括:

    1、ngx_http_proxy_module模塊實現反代HTTP請求的配置

    2、ngx_http_headers_module模塊實現nginx響應報文中的首部定義

    3、ngx_http_upstream_module模塊實現nginx反代HTTP請求時的負載均衡

    4、ngx_stream_core_module模塊實現nginx反代TCP/UDP協議請求

                   

第一章    ngx_http_proxy_module模塊實現反代HTTP請求的配置

    

    1、nginx作為反向代理http請求時的相關配置選項

    nginx作為前端接受用戶請求的服務器,接收到用戶請求后,nginx自己構建請求報文,向后端真實服務器進行請求,后端服務器響應內容是響應給nginx,nginx再將接受到的響應報文根據需要重新封裝后響應給真實用戶

    nginx可以在反代用戶請求到后端服務器時,將服務器響應的文件內容緩存到本地,下次用戶再訪問同樣頁面時,不用反代到后端服務器,而是直接利用本地的緩存進行響應,提升其效率

    proxy.png

    

    2、nginx反向代理示例

    blob.png

    <1> 配置好實驗環境,在nginx反代服務器上安裝nginx,在web1上安裝LAMP,在web2上安裝httpd

    blob.png

    blob.png    

    blob.png

    1477919031518126.png

    blob.png

    blob.png

    <2> 在web1和web2上提供測試頁面,啟動web服務,驗證服務是否正常

    blob.png

    blob.png

    <3> 在nginx主機上配置反代

    blob.png

    blob.png

    <4> 在客戶端上測試訪問

    blob.png

    blob.png

              

    3、nginx反向代理時傳遞客戶端IP給后端web服務器,實現日志中記錄真實客戶端IP的示例

   當通過nginx代理用戶請求到httpd服務器時,httpd上訪問日志記錄的客戶端IP全部是nginx的IP,這樣不利于對日志進行
   分析統計,此時,我們就可以利用proxy_set_header指令,在nginx向后端發送請求報文時,在請求首部中添加進去一個真
   正客戶端IP的首部

    blob.png

    在nginx主機上設置nginx請求后端web服務器的請求報文首部

    blob.png

    blob.png

    在后端httpd服務器上,修改日志記錄的格式,讓其記錄請求首部中我們定義的首部,從而實現記錄真實客戶端IP

    blob.png

    測試訪問,查看日志信息

    blob.png

          

    4、nginx反向代理http請求時,緩存后端響應內容的示例

    nginx的可以在反代用戶請求到后端服務器時,將服務器響應的文件內容緩存到本地,下次用戶再訪問同樣頁面時,
    不用反代到后端服務器,而直接利用本地的緩存進行響應,提升其效率,緩存時key-value方式存儲在內存中,key
    是可以指定的,一般是用戶請求的URI,value值是相應URI對應的網頁文件的特征碼(如MD5碼),具體的執行結果將
    保存在磁盤上的某個文件,該文件的文件名為文件內容的特征碼
    
    在上述實驗的基礎上,實現將后端的資源緩存到nginx服務上

    blob.png

    blob.png

    blob.png

      

第二章    ngx_http_headers_module模塊實現nginx響應報文中的首部定義

    1、http_headers模塊的相關配置指令介紹

    http_headers模塊可實現響應給客戶端的報文中,添加自定義首部,或修改指定首部的值

    headers.png    

    2、添加nginx響應報文首部的的示例

    在上述實驗的環境中,實現向nginx響應報文中添加首部,查看緩存是否命中

    blob.png

    blob.png

    

      

第三章    ngx_http_upstream_module模塊實現nginx反代HTTP請求時的負載均衡

    1、upstream模塊相關配置指令

    該模塊可以實現將多臺服務器定義為一個服務器組,然后定義一定的調度算法和屬性,當nginx作為http反代服務器,或者fastcgi反代,uwsgi反代,scgi反代,memcached反代時,利用各個反代的指令,如:proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, and memcached_pass指令,將請求代理到定義的服務器組上,實現負載均衡調取器的作用

    upstream.png

    2、nginx實現反代用戶請求到后端多臺服務器時的負載均衡示例

    在上述實驗的基礎上,實驗將請求負載均衡到后端的兩臺服務器

    blob.png

    blob.png

    blob.png

    blob.png    

    blob.png

    blob.png   

    blob.png

第四章    ngx_stream_core_module模塊實現nginx反代TCP/UDP協議請求

    1、stream模塊的相關配置指令

    該模塊可以實現nginx基于tcp或udp協議進行反代,相當于可以反向代理tcp或udp傳輸層相關應用,因此可以將nginx模擬成為傳輸層的反代的調度器(類似LVS)

    stream.png

    2、nginx配置成為后端服務器ssh服務的反向代理示例

    blob.png

    blob.png

    blob.png

原創文章,作者:M20-1倪文超,如若轉載,請注明出處:http://www.www58058.com/56476

(1)
M20-1倪文超M20-1倪文超
上一篇 2016-11-01
下一篇 2016-11-01

相關推薦

  • 內核與內核模塊

    內核與內核模塊 先來看一下,內核與內核模塊放在哪?這里以centos6為例 內核: /boot/vmlinuz或/boot/vmlinuz-version 內核解壓所需要RAMDisk: /boot/initrc(/boot/initrc-version) 內核模塊:/lib/modules/version/kernel或/lib/modules/uname…

    2017-09-04
  • 08RPM的簡單實用

    rpm命令,安裝(-i,–install)、卸載、升級(-U,-F)、查詢(-q,–query)、校驗(-V,–verify)、數據庫維護 安裝:rpm {-i|–install} [install-options] PACKAGE_FILE… v:可視化 h:以#顯示進度 rpm -ivh package_f…

    Linux干貨 2016-11-03
  • 馬哥教育首屆IT技術博客大賽–復審階段

    馬哥教育首屆IT博客大賽大眾評審開始了 2016年馬哥教育首屆IT博客技術大賽,評委初審已結束,正式進入大眾評審階段。。。。 此次博客大賽,雖然因為準備時間比較倉促,舉辦經驗略有不足(快去鄙視小編~&#x1f612;),但還是收到了10多位優秀的小伙伴共80篇博文(看看人家的勁頭,這就是差距呀&#x1f613;)的參賽作品投遞; 其中初審最高…

    Linux干貨 2016-06-07
  • 加油吧!少年!—至我和我M25期的伙伴

    引用 衣帶漸寬終不悔,為伊消得人憔悴。—王國維《人間詞話》 轉眼已到了27歲的年紀,不知道自己是否還稱得上少年。公交上讓座被小朋友成為叔叔也都是很多年的事了。哪怕再有一顆少年心現在也要肩負起整個家庭的責任。 從畢業已工作了將近六個年頭,無聊的工作平凡的薪水已經使我厭倦。閉上眼睛以后需要贍養四個老人,還要照顧孩子以后這些難題映入腦海。曾經以為遙遠的…

    Linux干貨 2017-07-11
  • M22 使用光盤修復Centos實驗初探

    實驗目的: 服務器由于文件丟失等原因造成無法啟動,可以使用光盤引導啟動服務器,然后對服務器進行修復。 實驗環境: VMware12安裝Centos6.8虛擬機 Centos6.8的光盤鏡像 實驗原理: 手動刪除虛擬機上的rpm程序文件,使用光盤鏡像恢復安裝rpm程序。 實驗過程: 1、     執行命令刪除rpm程序,…

    2017-03-06
  • 馬哥教育網絡班22期+第一周課程練習

        操作系統:centos 7.2  64位 計算機組成及功能。 計算機組成: 由存儲器、運算器、控制器、輸入設備、輸出設備組成。 功能: 存儲器:用來存放計算程序及參與運算的各種數據;例如:硬盤、內存 運算器:負責數據的算術運算和邏輯運算即數據的加工處理 控制器:負責對程序規定的控制信息進行分析,控制并…

    Linux干貨 2016-08-15
欧美性久久久久