首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > Apache >

Apache配备正向代理与反向代理

2012-11-13 
Apache配置正向代理与反向代理1. 正向代理配置正向代理很简单,只需要在浏览器的Proxy选项里加入你的Apache

Apache配置正向代理与反向代理
1. 正向代理

配置正向代理很简单,只需要在浏览器的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:"头,将不进行任何修改而直接通过。如果设置为On每个请求和应答都会对应当前主机得到一个"Via:"头。如果设置为Full?,每个产生的"Via:"头中都会额外加入Apache服务器的版本,以"Via:"注释域出现。如果设置为Block?,每个代理请求中的所有"Via:"头行都将被删除。且不会产生新的"Via:"头。
      <Proxy *>...</Proxy>:用来控制谁可以访问你的代理

      ?

      1.3 访问效果

      访问 www.sina.com,观察HTTP请求Response:

      Apache配备正向代理与反向代理

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

      ?

      2. 反向代理2.1 Apache设置
       1 <VirtualHost *:80> 2     ServerAdmin prograsliu@gmail.com 3     DocumentRoot "D:/www/test" 4     ServerName www.test.com 5     ServerAlias test.com 6     ErrorLog "logs/test.com-error.log" 7     CustomLog "logs/test.com-access.log" common     8     Alias /sublook "D:/www/test/look/sublook/" 9     <Directory "D:/www/test">10         Options FollowSymLinks11         AllowOverride All12         Order allow,deny13         Allow from all14     </Directory>15     16     #反向代理设置17     ProxyPass /proxy http://www.proxypass.com/proxy18     ProxyPassReverse /proxy http://www.proxypass.com/proxy19 20 </VirtualHost>21 22 <VirtualHost *:80>23     ServerAdmin prograsliu@gmail.com24     DocumentRoot "D:/www/proxypass"25     ServerName www.proxypass.com26     ServerAlias proxypass.com27     <Directory "D:/www/proxypass">28         Options FollowSymLinks29         AllowOverride All30         Order allow,deny31         Allow from all32     </Directory>33 </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 中有如下代码:

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

          proxypass.com/proxy/login.php 重定向到?proxypass.com/proxy/result.php

          页面显示

          ?in proxypass.com

          HTTP请求如图:

          Apache配备正向代理与反向代理

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

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

          Apache配备正向代理与反向代理

热点排行