Heim > Artikel > Backend-Entwicklung > Verstehen Sie den Unterschied zwischen Forward-Proxy und Reverse-Proxy
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
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)
367e5423ee61f30ef297d66282a28f6f 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/" 18d4f33c18dc818d2362eebe2c1a9e11 Options FollowSymLinks AllowOverride All Order allow,deny Allow from all bb15ed4aadeed04b3991578461de0768 #正向代理设置 ProxyRequests On ProxyVia On 7d9fcec3554cc595fd40d709276976ea Order deny,allow Deny from all Allow from 127.0.0.1 248646610573c6b250290f263ba4c0b4 ee672f0beb03b42be69279368a66a410
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.
6ee15aaa635d127fa1757e7ffe9b4b24...248646610573c6b250290f263ba4c0b4: Wird verwendet, um zu steuern, wer auf Ihren Proxy zugreifen kann.
7d9fcec3554cc595fd40d709276976ea Order deny,allow Deny from all Allow from 127.0.0.1 248646610573c6b250290f263ba4c0b4
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.
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>
现在看反向代理设置那一段
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('Location: http://www.proxypass.com/proxy/result.php'); ?>
那么在重定向的时候,Apache会将HTTP请求重新设为 http://www.test.com/proxy/result.php, 这样的作用稍后讲解
www.proxypass.com/proxy/result.php 中有如下代码:
<?php echo 'in proxypass.com <br>'; ?>
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
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!