概述:
上篇介紹了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可以在反代用戶請求到后端服務器時,將服務器響應的文件內容緩存到本地,下次用戶再訪問同樣頁面時,不用反代到后端服務器,而是直接利用本地的緩存進行響應,提升其效率
2、nginx反向代理示例
<1> 配置好實驗環境,在nginx反代服務器上安裝nginx,在web1上安裝LAMP,在web2上安裝httpd
<2> 在web1和web2上提供測試頁面,啟動web服務,驗證服務是否正常
<3> 在nginx主機上配置反代
<4> 在客戶端上測試訪問
3、nginx反向代理時傳遞客戶端IP給后端web服務器,實現日志中記錄真實客戶端IP的示例
當通過nginx代理用戶請求到httpd服務器時,httpd上訪問日志記錄的客戶端IP全部是nginx的IP,這樣不利于對日志進行 分析統計,此時,我們就可以利用proxy_set_header指令,在nginx向后端發送請求報文時,在請求首部中添加進去一個真 正客戶端IP的首部
在nginx主機上設置nginx請求后端web服務器的請求報文首部
在后端httpd服務器上,修改日志記錄的格式,讓其記錄請求首部中我們定義的首部,從而實現記錄真實客戶端IP
測試訪問,查看日志信息
4、nginx反向代理http請求時,緩存后端響應內容的示例
nginx的可以在反代用戶請求到后端服務器時,將服務器響應的文件內容緩存到本地,下次用戶再訪問同樣頁面時, 不用反代到后端服務器,而直接利用本地的緩存進行響應,提升其效率,緩存時key-value方式存儲在內存中,key 是可以指定的,一般是用戶請求的URI,value值是相應URI對應的網頁文件的特征碼(如MD5碼),具體的執行結果將 保存在磁盤上的某個文件,該文件的文件名為文件內容的特征碼 在上述實驗的基礎上,實現將后端的資源緩存到nginx服務上
第二章 ngx_http_headers_module模塊實現nginx響應報文中的首部定義
1、http_headers模塊的相關配置指令介紹
http_headers模塊可實現響應給客戶端的報文中,添加自定義首部,或修改指定首部的值
2、添加nginx響應報文首部的的示例
在上述實驗的環境中,實現向nginx響應報文中添加首部,查看緩存是否命中
第三章 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指令,將請求代理到定義的服務器組上,實現負載均衡調取器的作用
2、nginx實現反代用戶請求到后端多臺服務器時的負載均衡示例
在上述實驗的基礎上,實驗將請求負載均衡到后端的兩臺服務器
第四章 ngx_stream_core_module模塊實現nginx反代TCP/UDP協議請求
1、stream模塊的相關配置指令
該模塊可以實現nginx基于tcp或udp協議進行反代,相當于可以反向代理tcp或udp傳輸層相關應用,因此可以將nginx模擬成為傳輸層的反代的調度器(類似LVS)
2、nginx配置成為后端服務器ssh服務的反向代理示例
原創文章,作者:M20-1倪文超,如若轉載,請注明出處:http://www.www58058.com/56476