目錄
正向代理的概念" >正向代理的概念
两者区别" >两者区别
首頁 後端開發 php教程 了解正向代理與反向代理的差異

了解正向代理與反向代理的差異

Jun 11, 2018 am 10:49 AM

正向代理的概念

正向代理,也就是傳說中的代理,他的工作原理就像一個跳板,
簡單的說,
我是一個使用者,我訪問不了某網站,但是我能訪問一個代理伺服器
這個代理伺服器呢,他能訪問那個我不能訪問的網站
於是我先連上代理伺服器,告訴他我需要那個無法訪問網站的內容
代理伺服器去取回,然後返回給我

從網站的角度,只在代理伺服器來取內容的時候有一次記錄
有時並不知道是用戶的請求,也隱藏了用戶的資料,這取決於代理告不告訴網站

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

a2enmod proxy
a2enmod proxy_http
登入後複製

設定正向代理程式很簡單,只需要在瀏覽器的Proxy選項裡加入你的Apache配置的vHost主機即可1.1 Apache配置httpd-vhosts.conf(以Windows下為例)

<VirtualHost *:80>
    ServerAdmin prograsliu@gmail.com
    DocumentRoot "D:/www/test"
    ServerName www.test.com
    ServerAlias test.com
    ErrorLog "logs/test.com-error.log"
    CustomLog "logs/test.com-access.log" common    
    Alias /sublook "D:/www/test/look/sublook/"
    <Directory "D:/www/test">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    
    #正向代理设置
    ProxyRequests On
    ProxyVia On
    <Proxy *>
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Proxy>
</VirtualHost>
登入後複製

現在看正向代理設定那一段
ProxyRequests On:開啟Apache正向代理
ProxyVia On:控制位於代理伺服器鏈中的代理請求的流向
引用Apache2.2官方文件中對ProxyVia的解釋如下:
1.如果設定為預設值Off ,將不會採取特殊的處理。如果一個請求或應答包含"Via:"頭,將不進行任何修改而直接通過。
2.如果設定為On每個請求和應答都會對應目前主機得到一個"Via:"頭。
3.如果設定為Full ,每個產生的"Via:"頭中都會額外加入Apache伺服器的版本,以"Via:"註解網域出現。
4.如果設定為Block ,每個代理請求中的所有"Via:"頭行都將被刪除。且不會產生新的"Via:"頭。
...:用來控制誰可以訪問你的代理

<Proxy *>
     Order deny,allow
    Deny from all
     Allow from 127.0.0.1
</Proxy>
登入後複製

此處設定為本機可以使用代理,真正使用的時候就自己設定了
1.2 瀏覽器設定(以FireFox為例)

##1.3 存取效果
訪問www.sina.com,觀察HTTP請求Response:


#可以看到,Via:www.test.com,正向代理成功了。

反向代理的概念

繼續範例:

範例使用者造訪http://test.me/readme
但test. me上並不存在readme頁面
他是偷偷從另外一台伺服器上取回,然後作為自己的內容吐給用戶

但用戶並不知情

這裡所提到的test.me 這個網域對應的伺服器就設定了反向代理功能

结论就是 反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。

2.1 Apache设置

<VirtualHost *:80>
     ServerAdmin prograsliu@gmail.com
     DocumentRoot "D:/www/test"
     ServerName www.test.com
     ServerAlias test.com
     ErrorLog "logs/test.com-error.log"
     CustomLog "logs/test.com-access.log" common    
     Alias /sublook "D:/www/test/look/sublook/"
     <Directory "D:/www/test">
         Options FollowSymLinks
         AllowOverride All
         Order allow,deny
         Allow from all
     </Directory>
     
     #反向代理设置
     ProxyPass /proxy http://www.proxypass.com/proxy
     ProxyPassReverse /proxy http://www.proxypass.com/proxy
 
 </VirtualHost>
 
 <VirtualHost *:80>
     ServerAdmin prograsliu@gmail.com
     DocumentRoot "D:/www/proxypass"
     ServerName www.proxypass.com
     ServerAlias proxypass.com
     <Directory "D:/www/proxypass">
         Options FollowSymLinks
         AllowOverride All
         Order allow,deny
         Allow from all
     </Directory>
 </VirtualHost>
登入後複製

现在看反向代理设置那一段
ProxyPass /proxy http://www.proxypass.com/proxy : 将 www.test.com/proxy 域下的所有请求转发给 www.proxypass.com/proxy 代理,例如 www.test.com/proxy/login.php 会交给 www.proxypass.com/proxy/login.php 代理
ProxyPassReverse /proxy http://www.proxypass.com/proxy :
www.proxypass.com/proxy/login.php 中有如下代码:

<?php
    header(&#39;Location: http://www.proxypass.com/proxy/result.php&#39;);
?>
登入後複製

那么在重定向的时候,Apache会将HTTP请求重新设为 http://www.test.com/proxy/result.php, 这样的作用稍后讲解
www.proxypass.com/proxy/result.php 中有如下代码:

<?php
    echo &#39;in proxypass.com <br>&#39;;
?>
登入後複製

2.2 浏览器访问效果
访问 www.test.com/proxy/login.php
Apache将请求交给 www.proxypass.com/proxy/login.php 代理,HTTP请求如图:

可以发现其实Request中的请求还是 www.test.com 的,但是它确实是由 www.proxypass.com 来处理的

proxypass.com/proxy/login.php 重定向到 proxypass.com/proxy/result.php
页面显示 in proxypass.com
HTTP请求如图:



也可以看到请求依然是 www.test.com/proxy/result.php

这里就是 ProxyPassReverse 发挥作用的地方,如果不加这个项,重定向后HTTP请求会如下图:


可以发现请求中的GET是 www.proxypass.com 而不是 www.test.com ,这是因为配置了ProxyPassReverse后,proxypass.com/proxy/login.php 在重定向到 proxypass.com/proxy/result.php 时,Apache会将它调整回 test.com/proxy/result.php , 然后Apache再将 test.com/proxy/result.php 代理给 proxypass.com/proxy/result.php,所以说配置了 ProxyPassReverse 后,即使 proxypass.com/proxy 下的程序有重定向到其他 proxypss.com/proxy 的文件的(如 login.php 重定向到 result.php),你也不会在请求中发现 proxypass.com 的影子。

两者区别

用途上来讲:

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。
正向代理还可以使用缓冲特性减少网络使用率。
反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。
反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。

另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。

安全性 來講:

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

反向代理對外都是透明的,訪客並不知道自己存取的是一個代理。

本文說明了正向代理與反向代理的區別,更多相關內容請關注php中文網。

相關推薦:

如何使用Apache 建立虛擬主機

如何透過sh memcached 進程啟動及監控

介紹自動登入google play下載app report 的相關內容

以上是了解正向代理與反向代理的差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在FastAPI中使用Nginx進行反向代理程式和負載平衡 如何在FastAPI中使用Nginx進行反向代理程式和負載平衡 Aug 01, 2023 am 09:44 AM

如何在FastAPI中使用Nginx進行反向代理程式和負載平衡引言:FastAPI和Nginx是兩個非常受歡迎的Web開發工具。 FastAPI是一個高效能的Python框架,而Nginx則是一個強大的反向代理伺服器。結合這兩個工具,可以提高Web應用程式的效能和可靠性。在本文中,我們將學習如何在FastAPI中使用Nginx進行反向代理和負載平衡。什麼是反向代

Nginx反向代理中在存取控制和流量控制上的應用 Nginx反向代理中在存取控制和流量控制上的應用 Jun 10, 2023 pm 06:58 PM

Nginx是一款高效能、開源且多功能的Web伺服器,也被廣泛用作反向代理伺服器。反向代理伺服器可以用來提供負載平衡、高可用性、存取控制和流量控制等特性。本文將介紹Nginx反向代理程式中在存取控制和流量控制上的應用。一、存取控制IP位址黑名單/白名單Nginx可以透過設定IP位址黑名單或白名單來實現對請求的存取控制。黑名單中的IP位址將被拒絕訪問,而白名單中的I

Gin框架中的反向代理和請求轉送詳解 Gin框架中的反向代理和請求轉送詳解 Jun 23, 2023 am 11:43 AM

隨著Web應用程式的快速發展,越來越多的企業傾向於使用Golang語言來進行開發。在Golang開發中,使用Gin框架是非常流行的選擇。 Gin框架是一個高效能的Web框架,使用了fasthttp作為HTTP引擎,並擁有輕量級且優雅的API設計。在本文中,我們將深入探討Gin框架中反向代理和請求轉發的應用。反向代理的概念反向代理的概念就是透過代理伺服器使從客戶

如何使用Nginx Proxy Manager實現HTTPS協定下的反向代理 如何使用Nginx Proxy Manager實現HTTPS協定下的反向代理 Sep 26, 2023 am 08:40 AM

如何使用NginxProxyManager實現HTTPS協定下的反向代理近年來,隨著網際網路的普及和應用場景的多樣化,網站和應用程式的存取方式變得越來越複雜。為了提高網站的存取效率和安全性,許多網站開始採用反向代理來處理使用者的請求。而針對HTTPS協定的反向代理,在保護使用者隱私和確保通訊安全性方面扮演著重要的角色。本文將介紹如何使用NginxProxy

Nginx反向代理快取配置,實現靜態網頁存取加速 Nginx反向代理快取配置,實現靜態網頁存取加速 Jul 04, 2023 pm 06:09 PM

Nginx反向代理快取配置,實現靜態網頁存取加速簡介:隨著網際網路的快速發展,存取速度成為了網站運作中非常重要的因素。為了提高網頁的存取速度,我們可以使用Nginx反向代理快取技術來實現網頁的加速。本文將介紹如何使用Nginx設定反向代理快取來實現靜態網頁的加速。 Nginx反向代理快取設定:安裝Nginx:首先要安裝Nginx伺服器,可以透過apt-ge

利用Nginx Proxy Manager實現反向代理的負載平衡策略 利用Nginx Proxy Manager實現反向代理的負載平衡策略 Sep 26, 2023 pm 12:05 PM

利用NginxProxyManager實現反向代理的負載平衡策略NginxProxyManager是一款基於Nginx的代理程式管理工具,可以幫助我們輕鬆實現反向代理程式和負載平衡。透過設定NginxProxyManager,我們可以將請求分發給多個後端伺服器,以實現負載平衡,提高系統的可用性和效能。一、安裝並設定NginxProxyManager安

【總結】php反向代理不能存取的常見原因和解決方法 【總結】php反向代理不能存取的常見原因和解決方法 Mar 21, 2023 pm 07:10 PM

在使用反向代理時,可能會遇到無法存取的問題。特別是在使用 PHP 進行反向代理時,這個問題似乎更加突出。本文將介紹這個問題的常見原因和解決方法。

Nginx反向代理快取配置,提升網站存取速度 Nginx反向代理快取配置,提升網站存取速度 Jul 04, 2023 pm 10:01 PM

Nginx反向代理快取配置,提升網站存取速度引言:在網路時代,網站的存取速度是至關重要的。一個載入緩慢的網站會讓用戶感到不耐煩,並可能導致用戶流失。為了提升網站的存取速度,常見的方式是透過使用反向代理快取來減少伺服器的負載並加速頁面的載入。本文將介紹如何利用Nginx配置反向代理緩存,進而提升網站的存取速度。一、什麼是Nginx反向代理快取? Ngin

See all articles