[轉]使用Nginx實現反向代理


使用Nginx實現反向代理

解釋

正向代理的概念

正向代理,也就是傳說中的代理,他的工作原理就像一個跳板,
簡單的說,
我是一個用戶,我訪問不了某網站,但是我能訪問一個代理服務器
這個代理服務器呢,他能訪問那個我不能訪問的網站
於是我先連上代理服務器,告訴他我需要那個無法訪問網站的內容
代理服務器去取回來,然后返回給我

從網站的角度,只在代理服務器來取內容的時候有一次記錄
有時候並不知道是用戶的請求,也隱藏了用戶的資料,這取決於代理告不告訴網站

結論就是 正向代理 是一個位於客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求並指定目標(原始服務器),然后代理向原始服務器轉交請求並將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。

反向代理的概念

繼續舉例:
例用戶訪問 http://ooxx.me/readme
但ooxx.me上並不存在readme頁面
他是偷偷從另外一台服務器上取回來,然后作為自己的內容吐給用戶

但用戶並不知情
這很正常,用戶一般都很笨

這里所提到的 ooxx.me 這個域名對應的服務器就設置了反向代理功能

結論就是 反向代理正好相反,對於客戶端而言它就像是原始服務器,並且客戶端不需要進行任何特別的設置。客戶端向反向代理 的命名空間(name-space)中的內容發送普通請求,接着反向代理將判斷向何處(原始服務器)轉交請求,並將獲得的內容返回給客戶端,就像這些內容 原本就是它自己的一樣。

兩者區別

用途 上來講:

正向代理的典型用途是為在防火牆內的局域網客戶端提供訪問Internet的途徑。正向代理還可以使用緩沖特性減少網絡使用率。反向代理的典型用途是將 防火牆后面的服務器提供給Internet用戶訪問。反向代理還可以為后端的多台服務器提供負載平衡,或為后端較慢的服務器提供緩沖服務。

另外,反向代理還可以啟用高級URL策略和管理技術,從而使處於不同web服務器系統的web頁面同時存在於同一個URL空間下。

安全性 來講:

正向代理允許客戶端通過它訪問任意網站並且隱藏客戶端自身,因此你必須采取安全措施以確保僅為經過授權的客戶端提供服務。

反向代理對外都是透明的,訪問者並不知道自己訪問的是一個代理。

一、代理服務器 
1、什么是代理服務器 
代理服務器,客戶機在發送請求時,不會直接發送給目的主機,而是先發送給代理服務器,代理服務接受客戶機請求之后,再向主機發出,並接收目的主機返回的數據,存放在代理服務器的硬盤中,再發送給客戶機。 
這里寫圖片描述 
2、為什么要使用代理服務器 
1)提高訪問速度 
由於目標主機返回的數據會存放在代理服務器的硬盤中,因此下一次客戶再訪問相同的站點數據時,會直接從代理服務器的硬盤中讀取,起到了緩存的作用,尤其對於熱門站點能明顯提高請求速度。 
2)防火牆作用 
由於所有的客戶機請求都必須通過代理服務器訪問遠程站點,因此可在代理服務器上設限,過濾某些不安全信息。 
3)通過代理服務器訪問不能訪問的目標站點 
互聯網上有許多開發的代理服務器,客戶機在訪問受限時,可通過不受限的代理服務器訪問目標站點,通俗說,我們使用的翻牆瀏覽器就是利用了代理服務器,雖然不能出國,但也可直接訪問外網。 
二、反向代理 VS 正向代理 
1、什么是正向代理?什么是反向代理? 
正向代理,架設在客戶機與目標主機之間,只用於代理內部網絡對Internet的連接請求,客戶機必須指定代理服務器,並將本來要直接發送到Web服務器上的http請求發送到代理服務器中。 
這里寫圖片描述 
反向代理服務器架設在服務器端,通過緩沖經常被請求的頁面來緩解服務器的工作量,將客戶機請求轉發給內部網絡上的目標服務器;並將從服務器上得到的結果返回給Internet上請求連接的客戶端,此時代理服務器與目標主機一起對外表現為一個服務器。 
這里寫圖片描述 
2、反向代理有哪些主要應用? 
現在許多大型web網站都用到反向代理。除了可以防止外網對內網服務器的惡性攻擊、緩存以減少服務器的壓力和訪問安全控制之外,還可以進行負載均衡,將用戶請求分配給多個服務器。 
三、方向代理服務器Nginx 
Nginx作為近年來較火的反向代理服務器,安裝在目的主機端,主要用於轉發客戶機請求,后台有多個http服務器提供服務,nginx的功能就是把請求轉發給后面的服務器,決定哪台目標主機來處理當前請求。下面演示如何進行配置使Nginx發揮作用。 
1、模擬n個http服務器作為目標主機 
用作測試,簡單的使用2個tomcat實例模擬兩台http服務器,分別將tomcat的端口改為8081和8082 
2、配置IP域名 
192.168.72.49 8081.max.com 
192.168.72.49 8082.max.com 
3、配置nginx.conf

upstream tomcatserver1 {
    server 192.168.72.49:8081; } upstream tomcatserver2 { server 192.168.72.49:8082; } server { listen 80; server_name 8081.max.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://tomcatserver1; index index.html index.htm; } } server { listen 80; server_name 8082.max.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://tomcatserver2; index index.html index.htm; } }

流程: 
1)瀏覽器訪問8081.max.com,通過本地host文件域名解析,找到192.168.72.49服務器(安裝nginx) 
2)nginx反向代理接受客戶機請求,找到server_name為8081.max.com的server節點,根據proxy_pass對應的http路徑,將請求轉發到upstream tomcatserver1上,即端口號為8081的tomcat服務器。 
4、效果展示 
請求8081.max.com,tomcat1接收返回首頁 
這里寫圖片描述 
請求8082.max.com,tomcat2接收返回首頁 
四、總結 
通過分析我們不難得出,以百度為例,如果客戶機的IP和百度服務器(目標主機)的IP在同一個網段,那就形同局域網內部發送請求,速度極快。 
但如果滿足不了這種需求還想到達到一個較好的請求響應時,百度服務器就可以對外提供一個與目標服務器在一個網段的公網IP,也就是反向代理服務的IP,通過代理服務器轉發客戶機請求,決定幕后的N台服務器誰來處理這個請求,並且由於反向代理服務器與目標主機在一個網段,訪問速度也會很快。 
Nginx用作反向代理服務器時,它就是眾多反向代理服務器中的一種,通過簡單的配置,指定到服務器IP或域名地址便可將客戶機請求轉發給指定服務器處理請求。

轉載自:http://blog.csdn.net/daybreak1209/article/details/51549031

 
0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM