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

2024.02.10


今天將介紹正向代理和反向代理,包括基本概念、原理解析以及相關的配置案例。

一、代理的概念

相信大家都聽說過代理找個詞,代理在網路架構中具有不可替代的作用,比如在局域網中通過代理訪問互聯網網站、通過代理訪問無法直聯的網路等。 在網路架構中,代理伺服器扮演著重要的角色,而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相關介面,就可以使用代理來解決。