「正向代理」和「反向代理」你還傻傻分不清?

2021-03-06 51CTO技術棧

我家老闆看過這篇文章之後的評價是:寫的不錯,語句是通順的,排版是可以的,但反向代理是什麼還是不清楚。所以我就嘗試著向非 IT 工作者解釋「正向代理」和「反向代理」。

接下來我會先嘗試面向大眾,來解釋「代理」的概念,再從專業的角度解釋「正向代理」和「反向代理」。

在講代理的概念之前我先講個類比,也是我向我家老闆解釋的過程:

還好我反應機敏,要不然這個月的零花錢就要替我擋一刀了。可是我該怎麼解釋呢?還要讓沒有程式語言基礎的人也聽懂,傷腦筋啊!

在沒有思緒的時候,她突然問我晚上吃了沒有?這不就是很好的例子嗎?

解釋了這麼久,不知道是真的懂了,還是因為太困了。不過我有錢吃肉了。

接下來我們就認真的看看「正向代理」和「反向代理」。

首先看看說明圖,先有一個整體的理解:

正向代理( Forward Proxy ):是一個位於客戶端和原始伺服器之間的伺服器,為了從原始伺服器取得內容, 客戶端向代理髮送一個請求並指定目標(原始伺服器),然後代理向原始伺服器轉交請求並將獲得的內容返回給客戶端。客戶端才能使用正向代理。反向代理( Reverse Proxy ):是指以代理伺服器來接受 Internet 上的連接請求,然後將請求轉發給內部網絡上的伺服器,並將從伺服器上得到的結果返回給 Internet 上請求連接的客戶端,此時代理伺服器對外就表現為一個反向代理伺服器。

接下來我提煉一下各自的特點:

正向代理:
反向代理:

代理伺服器。

隱藏了真實的伺服器,為伺服器收發請求,使真實伺服器對客戶端不可見。

負載均衡伺服器,將用戶的請求分發到空閒的伺服器上。

意味著用戶和負載均衡伺服器直接通信,即用戶解析伺服器域名時得到的是負載均衡伺服器的 IP。


共同點:

都是做為伺服器和客戶端的中間層。

都可以加強內網的安全性,阻止 Web 攻擊。

都可以做緩存機制,提高訪問速度。


區別:

正向代理其實是客戶端的代理,反向代理則是伺服器的代理。

正向代理中,伺服器並不知道真正的客戶端到底是誰;而在反向代理中,客戶端也不知道真正的伺服器是誰。

作用不同。正向代理主要是用來解決訪問限制問題;而反向代理則是提供負載均衡、安全防護等作用。

說了這麼多,現在說說代理在工作中的時機應用場景吧。

我們知道在國內用訪問 www.google.com 是無法訪問的,因為正常情況下是會被 GFW 限制訪問的。

可是你還是想使用 Google 來科學上網的話,這個時候我們就需要一些代理來幫我們去請求 www.google.com,代理再把響應結果返回給你。

GFW 的作用主要是用於分析和過濾中國境內外網絡間的互相訪問。也就是說,他不僅能限制國內網民訪問境外的某些站點,也能限制國外用戶訪問國內的站點。

我們通常說的「被牆」,就是指訪問被 GFW 所限制,顧名思義,則是突破限制。

Nginx 伺服器的功能有很多,諸如反向代理、負載均衡、靜態資源伺服器等。

客戶端本來可以直接通過 HTTP 協議訪問伺服器,不過我們可以在中間加上一個 Nginx 伺服器,客戶端請求 Nginx 伺服器,Nginx 伺服器請求應用伺服器,然後將結果返回給客戶端,此時 Nginx 伺服器就是反向代理伺服器。

在虛擬主機的配置中配置反向代理:


server {
    listen 8080;                         
    server_name  192.168.1.1;            
    root  /data/toor;                    
    error_page 502 404 /page/404.html;   
    location ^~ /api/  {                        
        proxy_pass http://192.168.20.1:8080;    
    }
}

以上簡單的配置就可以實現反向代理的功能。當然反向代理也可以處理跨域問題。

對於使用 vue-cli 搭建的工程而言,我們知道 vue-cli 採用 http-proxy-middleware 插件來進行代理伺服器等各項配置。

所以我們可以利用 proxyTable,設置地址映射表。即使用 proxyTable 這個屬性進行相關的配置來解決跨域問題帶來的煩惱。

配置如下:

proxyTable: {
    '/weixin': {
        target: 'http://192.168.20.1:8080/', 
        secure: false,      
        changeOrigin: true, 
        pathRewrite: {
            '^/weixin': ''
        }
    }
}

負載均衡的配置:


upstream my {
    server 192.168.2.1:8080 weight=1 max_fails=2 fail_timeout=30s;
    server 192.168.2.2:8080 weight=1 max_fails=2 fail_timeout=30s;
    server 192.168.2.3:8080 weight=1 max_fails=2 fail_timeout=30s;
    server 192.168.2.4:8080 weight=1 max_fails=2 fail_timeout=30s;
   
  }

負載均衡即將 請求/數據 輪詢分攤到多個伺服器上執行,負載均衡的關鍵在於均勻。

也可以通過 ip-hash 的方式,根據客戶端 IP 地址的 Hash 值將請求分配給固定的某一個伺服器處理。

另外,伺服器的硬體配置可能不同,配置好的伺服器可以處理更多的請求,這時可以通過 weight 參數來控制。

作者:小生方勤

編輯:陶家龍、孫淑娟

出處:轉載自微信公眾號:小生方勤(ID:XSFQ_HSD)

阿里技術專家:優秀工程師是怎樣煉成的?

花了一個星期,我終於把RPC框架整明白了!

漫話:如何給女朋友解釋反向代理?

相關焦點

  • 讓小姐姐悄悄來告訴你:VPN與代理伺服器都是什麼鬼?
    相信大多數人看到「代理伺服器」這幾個字都是滿臉懵逼的狀態,但是如果筆者不和你聊代理伺服器,而是說一說VPN與科學上網,相信你一定就會漏出會心的微笑了。今天,筆者就和大家聊一聊究竟、、,還有?具體而言,代理伺服器一般可以分為正向代理與反向代理。正向與反向代理伺服器差別(圖片來源於網絡)所謂正向代理,是從客戶/客戶端角度出發,即為了從原始伺服器中取得內容,由客戶端想代理伺服器發出請求,並指定目標訪問伺服器,而後,代理(伺服器)向目標伺服器轉角需求,並將獲得的內容返回給客戶端。正向代理閉環完成。
  • WEB裡面的反向代理是什麼意思
    不同於前進代理,前進代理將從網際網路上獲得的資源以媒介的形式返回給相關的客戶端,而前進代理則是作為代理在伺服器端(例如 Web伺服器)使用的,而非客戶端。客戶機可以通過前向代理訪問許多不同的資源,反向代理就是許多客戶機在不了解後端伺服器存在的情況下通過它訪問不同後端伺服器上的資源,認為所有的資源都來自這個後端伺服器。
  • 五分鐘9步搞定nginx正向代理配置方法
    nginx在絕大數的場景中我們使用其用於做web中間件或反向代理使用,但是nginx實際上也提供了正向代理的功能。下面我們來進行nginx正向代理配置操作,以便大家能夠掌握nginx正向代理配置方法。第一步:獲取nginx正向代理模塊# git clone github.com/chobits/ngx_http_proxy_connect_module第二步:下載nginx源碼包# wget
  • Nginx 反向代理、負載均衡圖文教程 !
    當然很多都是隨便一說的玩笑話,聽過一笑便可,不必當真,也不必抱怨了好了,今天就直接來說一下主題吧,前端要了解一些運維的Nginx用法,內容不多,簡單看看就好,這兩個功能在工作當中就夠用了,那麼首先來看個問題,什麼是反向代理與負載均衡什麼是反向代理與負載均衡什麼是反向代理當我們有一個伺服器集群,並且伺服器集群中的每臺伺服器的內容一樣的時候,同樣我們要直接從個人電腦訪問到伺服器集群伺服器的時候無法訪問
  • Nginx---高性能的HTTP和反向代理web伺服器
    這個可以根據你的系統分頁大小來設置,一般一個請求頭的大小不會超過1k,不過由於一般系統分頁都要大於1k,所以這裡設置為分頁大小。 #分頁大小可以用命令getconf PAGESIZE 取得。 open_file_cache_errors on;}#設定http伺服器,利用它的反向代理功能提供負載均衡支持http{ #文件擴展名與文件類型映射表 include mime.types; #默認文件類型 default_type application/octet-stream
  • 誰說前端不需要懂-Nginx反向代理與負載均衡
    今天就直接來說一下主題吧,前端要了解一些運維的Nginx用法,內容不多,簡單看看就好,這兩個功能在工作當中就夠用了,那麼首先來看個問題,什麼是反向代理與負載均衡什麼是反向代理與負載均衡什麼是反向代理當我們有一個伺服器集群,並且伺服器集群中的每臺伺服器的內容一樣的時候,同樣我們要直接從個人電腦訪問到伺服器集群伺服器的時候無法訪問
  • 從0開始,在Linux中配置Nginx反向代理、負載均衡、session共享、動靜分離
    反向代理5.1 正向代理伺服器5.2 反向代理伺服器5.3 反向代理之負載均衡5.4 負載均衡進階6. session共享6.1 session共享的解決方案6.2 memcache實現session共享7. 動靜分離1.
  • goproxy-android v1.1 發布,全能的安卓代理服務,內網穿透!
    goproxy-android 是全能代理伺服器 snail007/goproxy 安卓版。
  • 期貨正向市場和反向市場的區別
    很多人不清楚期貨正向市場和反向市場的區別是什麼,那麼今天我們就專門來給大家詳細的說一說期貨正向市場和反向市場的區別到底是什麼。 正向市場和反向市場的區別一:基差不同。
  • 羊水破了和漏尿還傻傻分不清?今天教給你辨別的方法!
    小雲在家裡走動時,突然感覺下體有一股暖流湧出,他在心裡想肯定又要漏尿了,所以就趕緊去廁所處理了一下,但是沒過多久又有了同樣的感覺,這就讓他感覺有些不對勁了,平時也沒有這麼頻繁呀,所以小雲趕緊去問了問婆婆。
  • 看完別再傻傻分不清了!
    1.找代理公司。找代理公司是可以,但是所需的費用還是要個人自己出,因為生活壓力多大,所以出臺了個人繳納社保三個檔次。2.居民社保。注意居民社保只能繳納養老與醫療保險,這份保險的保費交多少完全看個人意願了。
  • 論HTTP代理和SOCKS5代理哪個更好
    (一)HTTP代理HTTP協議即超文本傳輸協議,是Internet上行信息傳輸時使用最為廣泛的一種非常簡單的通信協議。部分區域網對協議進行了限制,只允許用戶通過HTTP協議訪問外部網站。HTTP代理是代理伺服器的一種,www對於每一個上網的人都再熟悉不過了,www連接請求就是採用的http協議,所以我們在瀏覽網頁、下載數據(也可採用ftp協議)時,就是用http代理。它通常綁定在代理伺服器的80、3128、8080等埠上。HTTP應用在應用層上。目前HTTP功能支持「直接連接」和通過」HTTP代理「形式的連接。
  • 金色百科丨什麼是正向合約與反向合約
    但是合約也分好多種,比如我們常常看到正向合約與反向合約,有時候還會看到幣本位合約與穩定幣合約,它們究竟有何區別,我們該如何選擇?正向合約,也叫穩定幣合約,常見USDT本位合約就屬於此類。正向合約就是用USDT(或其他穩定幣)與其他幣種做合約交易對。
  • 注意你家電費快來學習:正向電量和反向電量,你知道多少?
    據悉,電錶有正向有功,反向有功,正向無功,反向無功,最大需量,峰、谷、平等計量功能,正常情況下,正向有功計量電量,反向無功是不走字的,電力部門按用戶正向計量的電量計收電費。反向用電對用戶沒有影響,舉個例子,你家有兩個門口,正門和後門,如果電從正門進去你家,就叫正向用電,你用了十度電,電錶正向電量加10,反向加0。如果電從後門進你家,就叫反向用電,用了十度電,電錶正向會加0,反向加10。無論怎麼進你家門,是不會對你用電有任何影響,所以供電局按照反向電量來計算你家的用電量是正確的,因為那個數字確實代表了你家實際用了多少電。
  • 你必須會的 JDK 動態代理和 CGLIB 動態代理
    通過從靜態代理、JDK 動態代理、CGLIB 動態代理來進行本文的分析。靜態代理靜態代理就是在程序運行之前,代理類字節碼 .class就已編譯好,通常一個靜態代理類也只代理一個目標類,代理類和目標類都實現相同的接口。接下來就先通過 demo 進行分析什麼是靜態代理,當前創建一個 Animal 接口,裡面包含 call函數。
  • 胎兒打嗝和胎動,你會傻傻分不清嗎?
    經歷過孕期的寶媽都知道胎兒時期胎兒出現打嗝,大部分孕媽媽都能辨別,可能有少部分的孕媽媽還傻傻分不清。那對新手準媽媽來說,如何辨別打嗝和胎動呢?當胎兒打嗝或胎動時孕媽媽肚皮都在動,到底哪種動是打嗝?哪種又是胎動呢?
  • 溼疹or痱子,你還傻傻分不清嗎?
    炎熱的夏季,很多寶寶開始出現溼疹,痱子,口水疹,尿布疹等,然而多數新手爸媽傻傻分不清溼疹還是痱子,我娃也經歷過溼疹,今天跟大家分享一下經驗。溼疹和痱子共同的點就是都會癢,嚴重的痱子還會有痛感,我們家長護理的方法一定要做對。
  • 你以為的翹臀在我看來只是骨盆前傾,不要呆呆傻傻分不清
    你以為的翹臀在我看來只是骨盆前傾,不要呆呆傻傻分不清許多人經常性的分不清翹臀與骨盆前傾的區別,誤把自己的骨盆前傾當做了圓潤豐滿的翹臀,為此還沾沾自喜的以為自己不用健身照樣天生麗質擁有令眾人羨慕的傲人翹臀。
  • 「讓右原則」和「右轉讓左轉」,不要再傻傻分不清了!
    「讓右原則」和「右轉讓左轉」,不要再傻傻分不清了!右轉讓左轉」,不要再傻傻分不清了!1/ 7「讓右原則」和「右轉讓左轉」,不要再傻傻分不清了!猜你喜歡「讓右原則」和「右轉讓左轉」,不要再傻傻分不清了! 轉彎讓直行 轉彎讓直行原則,沒什麼主線支線之分,只要轉彎就必須讓直行車輛。
  • 2019最新4A廣告公司圖譜及代理業務大全
    作者|Pauline   你是否聽過許多4A名稱,卻依舊不了解國際4A廣告公司格局……傳立、競立、偉門智威湯遜、李奧貝納、恆美、浩騰…