一次說清什麼是正向代理,什麼是反向代理?

来源:https://www.cnblogs.com/puls/archive/2018/03/23/8634505.html
-Advertisement-
Play Games

"原文鏈接" 之所以轉載這篇文章,是因為例子舉的太好了,非常適合初學者理解。但是樣式有點亂 自己稍微整理了下。 正向代理 比如你現在缺錢,想找馬雲爸爸去借錢,可想而知人家可能鳥都不鳥你,到最後碰一鼻子灰借不到錢。不過你認識你家隔壁老王,而老王認識馬雲同志,而且關係還很好。這時候你托老王去找馬雲借錢, ...


原文鏈接 之所以轉載這篇文章,是因為例子舉的太好了,非常適合初學者理解。但是樣式有點亂 自己稍微整理了下。

正向代理

比如你現在缺錢,想找馬雲爸爸去借錢,可想而知人家可能鳥都不鳥你,到最後碰一鼻子灰借不到錢。不過你認識你家隔壁老王,而老王認識馬雲同志,而且關係還很好。這時候你托老王去找馬雲借錢,當然這事最後成了,你從馬雲那裡借到了500萬!這時候馬雲並不知道錢是你借的,只知道這錢是老王借的。最後由老王把錢轉交給你。在這裡,老王就充當了一個重要的角色:代理。

此時的代理,就是我們常說的正向代理。代理客戶端去請求伺服器,隱藏了真實客戶端,伺服器並不知道真實的客戶端是誰。正向代理應用最廣泛的莫過於現在的某些“科學上網工具”,你訪問不了谷歌、Facebook的時候,你可以在國外搭建一臺代理伺服器,代理你訪問,代理伺服器再把請求到的數據轉交給你,你就可以看到內容了


正向代理

相對專業點解釋:

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

反向代理

比如你現在很無聊,想找人聊天,這時候你撥通了聯通客服10010電話,聯通的總機可能隨機給你分配一個閑置的客服給你接通。這時候你如願以償的和客服聊了起來,問了問她目前有沒有結婚、有沒有對象、家住哪裡、她的微信號、她的手機號。。。

此時聯通總機充當的角色就是反向代理,你只知道和客服接通並聊了起來,具體為什麼會接通這個客服MM,怎麼接通的,你並不知道。

反向代理隱藏了真正的服務端,就像你每天使用百度的時候,只知道敲打www.baidu.com就可以打開百度搜索頁面,但背後成千上萬台百度伺服器具體是哪一臺為我們服務的,我們並不知道。我們只知道這個代理伺服器,它會把我們的請求轉發到真實為我們服務的那台伺服器那裡去。

軟體層面一般常用Nginx來做反向代理伺服器,它的性能非常好,用來做負載均衡。


反向代理

相對專業點解釋:

  • 反向代理(Reverse Proxy)方式是指以代理伺服器來接受Internet上的連接請求,然後將請求轉發給內部網路上的伺服器;並將從伺服器上得到的結果返回給Internet上請求連接的客戶端,此時代理伺服器對外就表現為一個伺服器。

  • 通常的代理伺服器,只用於代理內部網路對Internet的連接請求,客戶機必須指定代理伺服器,並將本來要直接發送到Web伺服器上的http請求發送 到代理伺服器中。當一個代理伺服器能夠代理外部網路上的主機,訪問內部網路時,這種代理服務的方式稱為反向代理服務。

綜上所述:正向代理代理對象是客戶端,反向代理代理對象是服務端。

兩者區別

從用途 上來講:

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

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

從安全性 來講:

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

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

最後一句話總結:
打個比方,有a,b,c三個人
正向代理是: a通過b向C借錢,a知道c的存在 。
反向代理是: a向b借錢,b又向C借,a不知道c的存在。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Unity C#開發中,常常用到Enum或Struct等類型作為Dictionary的key,或List的元素,即: List<EnumType>,Dictionary<EnumType, ValueType>,List<StructType>,Dictionary<StructType, Valu ...
  • using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.... ...
  • 在本篇文章中,學習添加用於管理資料庫中的書籍的實體類。通過實體框架(EF Core)使用這些類來處理資料庫。EF Core是一個對象關係映射(ORM)框架,它簡化了編寫資料庫訪問的代碼。 創建的實體類被稱為POCO類(“普通的CLR對象”)因為他們沒有在EF Core中有任何依賴。它... ...
  • <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...
  • 本文主要是在介紹CentOS7.2的環境下Nginx的使用。 ...
  • 操作系統用於管理系統的硬體、軟體和數據資源,控製程序的運行,是應用軟體與硬體之間的介面,也是人機之間的介面。操作系統的職能包括進程管理、存儲管理、文件管理、設備管理、作業管理等。 在進程管理中,PV操作在處理進程的同步與互斥問題方面非常重要,當多個進程需要同時訪問共用資源時會用到。PV是用荷蘭語表示 ...
  • 某個角度上說,kindle很類似android,同樣的Linux內核,同樣的Java用戶層。不過kindle更註重簡單、節能、穩定。Amazon一向認為,功能過多會分散人們閱讀時候的註意力。 Kindle底層的Linux比Android保持了更多的linux相容性,可以使用GTK或者QT編寫程式。Q ...
  • exit(0):正常運行程式並退出程式; exit(1):非正常運行導致退出程式; exit 0 可以告知你的程式的使用者:你的程式是正常結束的。如果 exit 非 0 值,那麼你的程式的使用者通常會認為你的程式產生了一個錯誤。在 shell 中調用完你的程式之後,用 echo $? 命令就可以看到 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...