關於正向代理以及反向代理的一些理解


正向代理代理客戶端,反向代理代理服務器

 

1、代理

  在Java設計模式中,代理模式是這樣定義的:給某個對象提供一個代理對象,並由代理對象控制原對象的引用。

  可能大家不太明白這句話,在舉一個現實生活中的例子:比如我們要買一間二手房,雖然我們可以自己去找房源,但是這太花費時間精力了,而且房屋質量檢測以及房屋過戶等一系列手續也都得我們去辦,再說現在這個社會,等我們找到房源,說不定房子都已經漲價了,那么怎么辦呢?最簡單快捷的方法就是找二手房中介公司(為什么?別人那里房源多啊),於是我們就委托中介公司來給我找合適的房子,以及后續的質量檢測過戶等操作,我們只需要選好自己想要的房子,然后交錢就行了。

  代理簡單來說,就是如果我們想做什么,但又不想直接去做,那么這時候就找另外一個人幫我們去做。那么這個例子里面的中介公司就是給我們做代理服務的,我們委托中介公司幫我們找房子。

  Nginx 主要能夠代理如下幾種協議,其中用到的最多的就是做Http代理服務器。

  

 

2、正向代理

  弄清楚什么是代理了,那么什么又是正向代理呢?

  這里我再舉一個例子:大家都知道,現在國內是訪問不了 Google的,那么怎么才能訪問 Google呢?我們又想,美國人不是能訪問 Google嗎(這不廢話,Google就是美國的),如果我們電腦的對外公網 IP 地址能變成美國的 IP 地址,那不就可以訪問 Google了。你很聰明,VPN 就是這樣產生的。我們在訪問 Google 時,先連上 VPN 服務器將我們的 IP 地址變成美國的 IP 地址,然后就可以順利的訪問了。

  這里的 VPN 就是做正向代理的。正向代理服務器位於客戶端和服務器之間,為了向服務器獲取數據,客戶端要向代理服務器發送一個請求,並指定目標服務器,代理服務器將目標服務器返回的數據轉交給客戶端。這里客戶端是要進行一些正向代理的設置的。

  PS:這里介紹一下什么是 VPN,VPN 通俗的講就是一種中轉服務,當我們電腦接入 VPN 后,我們對外 IP 地址就會變成 VPN 服務器的 公網 IP,我們請求或接受任何數據都會通過這個VPN 服務器然后傳入到我們本機。這樣做有什么好處呢?比如 VPN 游戲加速方面的原理,我們要玩網通區的 LOL,但是本機接入的是電信的寬帶,玩網通區的會比較卡,這時候就利用 VPN 將電信網絡變為網通網絡,然后在玩網通區的LOL就不會卡了(注意:VPN 是不能增加帶寬的,不要以為不卡了是因為網速提升了)。

  可能聽到這里大家還是很抽象,沒關系,和下面的反向代理對比理解就簡單了。

 

3、反向代理

  反向代理和正向代理的區別就是:正向代理代理客戶端,反向代理代理服務器。

  反向代理,其實客戶端對代理是無感知的,因為客戶端不需要任何配置就可以訪問,我們只需要將請求發送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取數據后,在返回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器地址,隱藏了真實服務器IP地址。

  下面我們通過兩張圖來對比正向代理和方向代理:

  

 

  

  理解這兩種代理的關鍵在於代理服務器所代理的對象是什么,正向代理代理的是客戶端,我們需要在客戶端進行一些代理的設置。而反向代理代理的是服務器,作為客戶端的我們是無法感知到服務器的真實存在的。

  總結起來還是一句話:正向代理代理客戶端,反向代理代理服務器。

 

4、Nginx 反向代理

  范例:使用 nginx 反向代理 www.123.com 直接跳轉到127.0.0.1:8080

  ①、啟動一個 tomcat,瀏覽器地址欄輸入 127.0.0.1:8080,出現如下界面

  

 

  ②、通過修改本地 host 文件,將 www.123.com 映射到 127.0.0.1

127.0.0.1 www.123.com

  將上面代碼添加到 Windows 的host 文件中,該文件位置在:

   

  配置完成之后,我們便可以通過 www.123.com:8080 訪問到第一步出現的 Tomcat初始界面。

  那么如何只需要輸入 www.123.com 便可以跳轉到 Tomcat初始界面呢?便用到 nginx的反向代理。

  ③、在 nginx.conf 配置文件中增加如下配置:

復制代碼
1     server {
2         listen       80;
3         server_name  www.123.com;
4 
5         location / {
6             proxy_pass http://127.0.0.1:8080;
7             index  index.html index.htm index.jsp;
8         }
9     }
復制代碼

  如上配置,我們監聽80端口,訪問域名為www.123.com,不加端口號時默認為80端口,故訪問該域名時會跳轉到127.0.0.1:8080路徑上。

  我們在瀏覽器端輸入 www.123.com 結果如下:

  

  ④、總結

  其實這里更貼切的說是通過nginx代理端口,原先訪問的是8080端口,通過nginx代理之后,通過80端口就可以訪問了。


免責聲明!

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



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