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 09:10
下一篇 2016-11-01 10:08

相關推薦

  • 文件權限的設置和文件的特殊權限及其命令使用

    1. linux的系統管理員很重要的任務就是管理自己服務器的文件,對于權限設置等級森嚴的linux文件系統,文件系統的訪問權限管理自然也是linux管理員必不可少的一項技能。 在linux中文件的基本權限中:被分為三大項:文件擁有者,文件擁有組,其他人。 每一項中,用三位八進制的數字來代表文件是否可讀,是否可寫,是否可執行。并根據用戶不同可以設置不同的uma…

    Linux干貨 2016-08-05
  • 重構與模式:改善代碼三部曲中的第三部

    一、改善代碼的三部曲    《設計模式》-> 《重構》-> 《重構與模式》。也就是設計->重構->重構出新設計。    《設計模式》主要詳細說明20幾種模式,為我們帶來了常見設計問題的經典解決方案,從而改變了整個面向對象開發的面貌。為設計而著。    《重構》改善既有代碼的設…

    Linux干貨 2015-04-07
  • 三劍客-sed小結

     sed是一款流編輯器工具,通常我們用來對文本進行過濾與替換操作,特別是當你想要對幾十個配置文件做統一更改時,你會感受到sed的魅力。它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到…

    系統運維 2016-07-26
  • 磁盤管理

                              磁盤管理 fdisk分區管理工具 :fdisk ,parted,sfdisk      fdisk:對于一塊硬盤來講,…

    Linux干貨 2015-10-14
  • Linux Service and Security(Part 2)

    接PART 1 4、SSH端口轉發:SSH會自動加密和解密所有SSH客戶端與服務端之間的網絡數據。但是,SSH還能夠將其它TCP端口的網絡數據通過SSH鏈接來轉發,并且自動提供了相應的加密及解密服務,這一過程也被叫做“隧道(tunneling)”。telnet,SMTP,LDAP這些TCP應用均能夠從中得益,避免了用戶名、密碼以及隱私信息的明文傳輸。同時,如…

    Linux干貨 2016-10-09
  • Linux網絡屬性配置命令和管理詳解

    一、Linux網絡屬性配置     1.Linux主機接入到網絡方式 IP/NETMASK:實現本地網絡通信 路由(網關):可以進行跨網絡通信 DNS服務器地址:基于主機名的通信,Linux可以有三個DNS地址 當第一個地址本身掛了,才會查找其備用地址;若第一個地址無法解析則停止     2.網絡屬…

    Linux干貨 2016-04-30
欧美性久久久久