為什麼網路代理技術這麼火紅?正向代理| 反向代理

2024.02.16

一、代理的概念

相信大家都聽過代理找個詞,代理在網路架構中具有不可替代的作用,例如在區域網路中透過代理程式存取網際網路網站、透過代理存取無法直聯的網路等。在網路架構中,代理伺服器扮演著重要的角色,而Nginx作為一款高效能的Web伺服器和反向代理伺服器,在實際應用中有著廣泛的使用。今天介紹正向代理和反向代理,包括基本概念、原理解析以及相關的配置案例。 (隨著代理技術的發展,目前很多網站也做了相關的防反向代理配置,有可能你配置了相關的代理,但是不讓你去訪問。)

二、正向代理—Forward Proxy

1.基本介紹

正向代理是指代理伺服器代表客戶端向伺服器發送請求。在正向代理的場景中,客戶端並非直接存取目標伺服器,而是透過正向代理伺服器來存取。正向代理的典型應用場景包括存取受限的網站、保護客戶端隱私等。

這種代理其實在生活中是比較常見的,例如造訪外國網站技術,其用到的就是代理技術。有時候,用戶想要訪問某國外網站,該網站無法在國內直接訪問,但是我們可以訪問到一個代理伺服器,這個代理伺服器可以訪問到這個國外網站。這樣呢,使用者對該國外網站的存取就需要透過代理伺服器來轉送請求,而該代理伺服器也會將請求的回應再傳回給使用者。這個上網的過程就是用到了正向代理。

2.原理

當客戶端發起請求時,請求首先傳送給正向代理伺服器,然後由代理伺服器轉送請求到目標伺服器,最後將目標伺服器的回應傳回給客戶端。正向代理的核心在於代理伺服器作為客戶端的代表,隱藏了客戶端的真實身份,典型的正向代理技術:VPN網路。

  • 正向代理需要在客戶端做相關的代理配置,例如在瀏覽器新增代理地址等。
  • 正向代理即是客戶端代理,代理客戶端,服務端不知道實際發起請求的客戶端。
  • 透過正向代理伺服器存取目標伺服器,目標伺服器是不知道真正的客戶端是誰的,甚至不知道存取自己的是代理程式(有時中介也直接冒充租客)。

3.使用場景

  • 突破存取限制:透過代理伺服器,可以突破自身IP存取限制,造訪國外網站,教育網等。
  • 提高存取速度:常代理伺服器都設定一個較大的硬碟緩衝區,會將部分請求的回應儲存到緩衝區中,當其他使用者再存取相同的資訊時, 則直接由緩衝區中取出訊息,傳給用戶,以提高存取速度。
  • 隱藏客戶端真實IP:上網者也可以透過此方法隱藏自己的IP,免受攻擊。

4.配置案例

假設我們需要使用Nginx作為正向代理來存取www.baidu.com,我們可以透過以下Nginx設定實現:

server {
    listen 80;
    server_name a.proxy.xyz;

    location / {
        resolver 8.8.8.8;
        proxy_pass http://www.baidu.com;
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

在這個配置中,我們定義了一個名為a.proxy.xyz的Nginx服務,當客戶端訪問該服務時,Nginx會將請求代理到www.baidu.com,實現了對百度網站的正向代理訪問。

三、反向代理—Reverse Proxy

1.基本介紹

反向代理是指代理伺服器代表伺服器向客戶端發送回應。在反向代理的場景中,客戶端直接存取代理伺服器,而代理伺服器則負責將請求轉發給後端的目標伺服器,並將目標伺服器的回應傳回給客戶端。反向代理常用於負載平衡、安全防護等場景。

2.原理

當客戶端發送請求時,請求首先到達反向代理伺服器,然後由代理伺服器根據配置規則將請求轉發到後端的目標伺服器,最後將目標伺服器的回應傳回給客戶端。反向代理的核心在於代理伺服器隱藏了後端伺服器的真實身分。常見的反向代理技術:Nginx負載平衡。

反向代理即是服務端代理,代理服務端,客戶端不知道實際提供服務的服務端。

3.使用場景

  • 隱藏伺服器真實IP:使用反向代理,可以對客戶端隱藏伺服器的IP位址。
  • 負載平衡:反向代理伺服器可以做負載平衡,根據所有真實伺服器的負載情況,將客戶端請求分發到不同的真實伺服器上。
  • 提高存取速度:反向代理伺服器可以對於靜態內容及短時間內有大量存取請求的動態內容提供快取服務,提高存取速度。
  • 提供安全保障:反向代理伺服器可作為應用層防火牆,為網站提供對基於Web的攻擊行為(例如DoS/DDoS)的防護,更容易排查惡意軟體等。也可以為後端伺服器統一提供加密和SSL加速(如SSL終端代理),提供HTTP存取認證等。

4.配置案例

假設我們需要使用Nginx做負載平衡配置,我們可以透過以下Nginx配置實現:

http {  
    # 定义代理服务器地址  
    upstream backend {  
        server backend1.example.com;  
        server backend2.example.com;  
    }  
    # 其他配置项...  
    server {  
        # 监听端口  
        listen 80;  
        # 代理到后端服务器  
        location / {  
            proxy_pass http://backend;  
        }  
    }  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

這個設定中使用了Nginx的upstream模組定義了後端伺服器的位址,並在location中使用了proxy_pass指令將請求代理到定義的後端伺服器群組。這樣的設定使得Nginx成為了一個反向代理伺服器,將客戶端的請求轉送到後端伺服器,然後將後端伺服器的回應傳回給客戶端。

總結

今天分享的代理技術,在生活中用途還是多的,比如可以通過自己搭建代理去訪問相關網站或者給需要的人提供技術支持,這裡點到為止,希望大家能懂,比如如何解決在國內訪問openai相關接口,就可以使用代理來解決。