什麼是反向代理

原文鏈接:https://segmentfault.com/q/1010000003491873

https://segmentfault.com/q/1010000003491873

A和B直接溝通,這就等於沒有代理

然後中間夾一個傳話的C,C就是代理了,A通過C把信息傳遞給B,然後再把B的反饋轉達給A.

在這個過程中,A知道溝通的直接目標是B,只不過由於各種原因無法直接和B面對面,需要中間人C,這就是所謂“正向代理”,其實i我們很少說正向代理,一般直接說代理

舉個例子:

我下訪問www.google.com,然而大家都知道它被搶了,我沒法直接訪問它,於是我連接了一個VPN

服務並設定其爲本地HTTP訪問的代理,然後我再訪問www.google.com,此時我的請求被該VPN服務代理了,它幫我訪問了www.google.com然後把返回結果給我(叫做代理,不是叫做反向代理)

  • 這個例子是代理的一種應用場景,但並非代表代理只能用於這個
  • 最重要的特徵是我知道www.google.com的存在,而且我訪問的網址也的確是www.google.com,只不過我的訪問請求由VPN代理來轉交,同樣相應也是如此
  • 在本例中,代理是透明的,用戶有可能不知道他的存在(通常是知道的,只不過代理的設置及可能不是他自己來做)

 

 

另一種情況是:

A並不知道B的存在,它只知道找C就可以得到想要的回覆,對於A來說有沒有B,B!,C,C!......D,F都不重要,只要有C就夠了。而C則根據情況去獲取反饋然後相應給A。                         

這種就叫反向代理了

舉個例子:

我有一個Nginx服務部署再www.mysite.com的80端口,用戶訪問它就可以看見我做的網站;在我的網站中有一些Ajax請求獲取JSON數據,然而提供這些數據的API Service部署在服務器上的8000端口,該端口由於防火牆的阻撓使得用戶無法直接訪問到。

於是我重新配置了Nginx,讓它把所有經由:80/api/的訪問請求都代理給localhost:8000,然後把響應返回給原始請求方,這就是反向代理

  • 這是反向代理的一種應用場景,但並非代表它只能這樣用
  • 最重要的特徵是我的用戶壓根不知道localhost:8000這個服務的存在,並且即使知道也訪問不到-----開VPN也訪問不到,這是兩碼事
  • 對於用戶來講,唯一的“對話”方只有www.mysite.com(80端口),他們不知道也不比要知道後面發生了什麼

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章