Heim > Backend-Entwicklung > PHP-Tutorial > Verstehen Sie den Unterschied zwischen Forward-Proxy und Reverse-Proxy

Verstehen Sie den Unterschied zwischen Forward-Proxy und Reverse-Proxy

jacklove
Freigeben: 2023-03-31 13:34:01
Original
3582 Leute haben es durchsucht

Das Konzept des Forward Agents

Forward Agent, auch bekannt als der legendäre Agent, funktioniert wie ein Sprungbrett,
Einfach ausgedrückt:
Ich bin ein Benutzer, ich Ich kann auf eine bestimmte Website nicht zugreifen, aber ich kann auf einen Proxyserver zugreifen
Dieser Proxyserver kann auf die Website zugreifen, auf die ich nicht zugreifen kann
Also habe ich mich zuerst mit dem Proxyserver verbunden und ihm gesagt, dass ich den Inhalt benötige der Website, auf die nicht zugegriffen werden kann
Der Proxyserver ruft sie ab und gibt sie dann an mich zurück

Aus Sicht der Website gibt es nur einen Datensatz, wenn der Proxyserver kommt, um den Inhalt abzurufen
Manchmal weiß ich es nicht Es ist die Anfrage des Benutzers und verbirgt auch die Informationen des Benutzers. Es hängt davon ab, ob der Proxy der Website mitteilt

Die Schlussfolgerung ist, dass der Forward-Proxy ein Server zwischen dem ist Client und Ursprungsserver: Um Inhalte vom Originalserver abzurufen, sendet der Client eine Anfrage an den Proxy und gibt das Ziel (Originalserver) an. Anschließend leitet der Proxy die Anfrage an den Originalserver weiter und gibt den erhaltenen Inhalt zurück an den Kunden. Um den Forward-Proxy nutzen zu können, muss der Client einige spezielle Einstellungen vornehmen.
Apache-Proxy-Modul aktivieren

a2enmod proxy
a2enmod proxy_http
Nach dem Login kopieren

Die Konfiguration eines Forward-Proxys ist sehr einfach, Sie müssen nur die Proxy-Option Ihres Browsers hinzufügen Der von Apache konfigurierte vHost-Host kann 1.1 Apache-Konfiguration httpd-vhosts.conf (nehmen Sie Windows als Beispiel)

<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>
Nach dem Login kopieren

Sehen Sie sich nun den Forward-Proxy-Satz an Dieser Abschnitt
ProxyRequests Ein: Schalten Sie den Apache-Forward-Proxy ein
ProxyVia Ein: Steuern Sie den Fluss von Proxy-Anfragen in der Proxy-Server-Kette
Zitieren Sie die Erklärung von ProxyVia im offiziellen Apache2.2-Dokument wie folgt:
1. Wenn der Standardwert Aus eingestellt ist, wird keine Sonderbehandlung durchgeführt. Wenn eine Anfrage oder Antwort einen „Via:“-Header enthält, wird dieser ohne jegliche Änderung weitergeleitet.
2. Wenn diese Option aktiviert ist, erhält jede Anfrage und Antwort einen „Via:“-Header, der dem aktuellen Host entspricht.
3. Bei der Einstellung „Vollständig“ wird die Version des Apache-Servers zu jedem generierten „Via:“-Header hinzugefügt und im Anmerkungsfeld „Via:“ angezeigt.
4. Bei der Einstellung „Blockieren“ werden alle „Via:“-Headerzeilen in jeder Proxy-Anfrage gelöscht. Und es wird kein neuer „Via:“-Header generiert.
...: Wird verwendet, um zu steuern, wer auf Ihren Proxy zugreifen kann.

<Proxy *>
     Order deny,allow
    Deny from all
     Allow from 127.0.0.1
</Proxy>
Nach dem Login kopieren

Stellen Sie hier ein, dass der lokale Computer den Proxy verwenden kann, wenn Sie ihn tatsächlich verwenden , Sie können es selbst verwenden. Einrichten
1.2 Browsereinstellungen (am Beispiel von Firefox)


1.3 Zugriffseffekt

Besuchen Sie www.sina.com und beobachten Sie die Antwort der HTTP-Anfrage:


Sie können das sehen über: www.test.com, den Forward-Proxy ist erfolgreich.

Das Konzept des Reverse Proxy

Weiter mit dem Beispiel:
Zum Beispiel besucht ein Benutzer http://test.me/readme
Aber testen Sie. Die Readme-Seite existiert bei mir nicht
Er hat sie heimlich von einem anderen Server abgerufen und sie dann als seinen eigenen Inhalt an den Benutzer ausgespuckt

Aber der Benutzer wusste es nicht

Was hier erwähnt wird Der Server, der dem Domainnamen test.me entspricht, wurde mit einer Reverse-Proxy-Funktion eingerichtet

结论就是 反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(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>
Nach dem Login kopieren

现在看反向代理设置那一段
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;);
?>
Nach dem Login kopieren

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

<?php
    echo &#39;in proxypass.com <br>&#39;;
?>
Nach dem Login kopieren

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空间下。

Aus Sicht der Sicherheit:

Der Forward-Proxy ermöglicht es dem Client, über ihn auf jede Website zuzugreifen und den Client selbst zu verbergen. Daher müssen Sie Sicherheitsmaßnahmen ergreifen, um sicherzustellen, dass nur autorisierte Benutzer Zugriff auf die Website erhalten Der Kunde erbringt Dienstleistungen.

Reverse-Proxys sind für die Außenwelt transparent und Besucher wissen nicht, dass sie einen Proxy besuchen.

In diesem Artikel wird der Unterschied zwischen Forward-Proxy und Reverse-Proxy erläutert. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

So verwenden Sie Apache zum Erstellen eines virtuellen Hosts

So starten und überwachen Sie den SH-Memcached Prozess

Einführung des relevanten Inhalts der automatischen Anmeldung bei Google Play zum Herunterladen des App-Berichts

Das obige ist der detaillierte Inhalt vonVerstehen Sie den Unterschied zwischen Forward-Proxy und Reverse-Proxy. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage