ホームページ  >  記事  >  バックエンド開発  >  フォワードプロキシとリバースプロキシの違いを理解する

フォワードプロキシとリバースプロキシの違いを理解する

jacklove
jackloveオリジナル
2018-06-11 10:49:243547ブラウズ

フォワード エージェントのコンセプト

フォワード エージェントは伝説的なエージェントです。彼の行動原理は踏み台のようなものです。
簡単に言えば、私はユーザーです。特定の Web サイトにアクセスできませんが、プロキシ サーバーにはアクセスできます。
このプロキシ サーバーに関しては、私がアクセスできない Web サイトに彼はアクセスできます。
そこで、最初にプロキシ サーバーに接続し、コンテンツが必要であることを彼に伝えました。アクセスできない Web サイトの内容
プロキシ サーバーがコンテンツを取得して返します

Web サイトの観点から見ると、プロキシ サーバーがコンテンツを取得しに来たときのレコードは 1 つだけです

分からない場合もあります。これはユーザーの要求であり、ユーザーの情報も非表示にします。エージェントが Web サイトに通知するかどうかによって異なります。

結論としては、フォワード プロキシは、サーバー間のサーバーです。クライアントとオリジン サーバーの場合、元のサーバーからコンテンツを取得するために、クライアントはプロキシにリクエストを送信し、ターゲット (元のサーバー) を指定します。その後、プロキシはリクエストを元のサーバーに転送して、取得したコンテンツを返します。クライアントに。フォワード プロキシを使用するには、クライアントで特別な設定を行う必要があります。
Apache プロキシ モジュールを有効にする

a2enmod proxy
a2enmod proxy_http

フォワード プロキシの設定は非常に簡単です。ブラウザのプロキシ オプションを追加するだけです。 Apache によって構成された vHost ホストは次のとおりです。1.1 Apache 構成 httpd-vhosts.conf (Windows を例にします)

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
次に、フォワード プロキシ セットを見てみましょう。そのセクション

ProxyRequests On: Apache フォワード プロキシをオンにする
ProxyVia On: プロキシ サーバー チェーンにあるプロキシ リクエストのフローを制御する
公式 Apache2.2 ドキュメントの ProxyVia の説明は次のように引用されています。 :
1. デフォルト値 Off に設定されている場合、特別な処理は行われません。リクエストまたはレスポンスに「Via:」ヘッダーが含まれている場合、変更せずに通過します。
2. On に設定すると、各リクエストと応答は現在のホストに対応する「Via:」ヘッダーを取得します。
3. Full に設定すると、Apache サーバーのバージョンが生成された各 "Via:" ヘッダーに追加され、"Via:" 注釈フィールドに表示されます。
4. [ブロック] に設定すると、各プロキシ リクエストのすべての「Via:」ヘッダー行が削除されます。また、新しい「Via:」ヘッダーは生成されません。
6ee15aaa635d127fa1757e7ffe9b4b24...248646610573c6b250290f263ba4c0b4: プロキシにアクセスできるユーザーを制御するために使用されます

7d9fcec3554cc595fd40d709276976ea
     Order deny,allow
    Deny from all
     Allow from 127.0.0.1
248646610573c6b250290f263ba4c0b4
実際に使用するときにローカル マシンがプロキシを使用できるようにここで設定します。


#1.2 ブラウザ設定 (例として FireFox を使用します)

# 1.3 アクセス効果
www.sina.com にアクセスして HTTP リクエストを観察します。 応答:


Via: www.test.com で、フォワード プロキシが次のとおりであることがわかります。成功。


リバース プロキシの概念

例を続けます:

ユーザーは http://test.me/readme

にアクセスしますが、テスト。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空间下。

セキュリティの観点:

フォワード プロキシを使用すると、クライアントはそれを介して任意の Web サイトにアクセスし、クライアント自体を隠すことができるため、許可されたユーザーのみがアクセスできるようにセキュリティ対策を講じる必要があります。クライアントがサービスを提供します。

リバース プロキシは外部に対して透過的であるため、訪問者は自分がプロキシを訪問していることを知りません。

この記事では、フォワード プロキシとリバース プロキシの違いについて説明します。関連コンテンツの詳細については、php 中国語 Web サイトを参照してください。

関連する推奨事項:

Apache を使用して仮想ホストを構築する方法

sh memcached を起動して監視する方法プロセス

Google Playに自動ログインしてアプリレポートをダウンロードする関連コンテンツを紹介します

以上がフォワードプロキシとリバースプロキシの違いを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。