当前位置:首页 > CN2资讯 > 正文内容

Apache配置正向代理与反向代理apache反向代理服务器

1天前CN2资讯


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

1. 正向代理

配置正向代理很简单,此处我们配置vhost来实现代理, 只需要在浏览器的Proxy选项里加入你的Apache配置的vHost主机即可

 

1.1 开启Apache代理模块并引入vhost配置文件

早http.conf开启代理模块

LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so

引入vhost文件

Include conf/extra/httpd-vhosts.conf

如果你想监听别的端口, 修改Listen参数

Listen 80 Listen 8087 Listen 8088

将想监听的端口全都写上,相应的, 在vhost文件里写上

NameVirtualHost *:80 NameVirtualHost *:8087 NameVirtualHost *:8088

NameVirtualHost表示vhost匹配的请求的ip和端口那些会取扫描vhost

1.1 Apache配置 httpd-vhosts.conf(以Windows下为例)

<VirtualHost *:80> ServerAdmin prograsliu@ DocumentRoot "D:/www/test" ServerName www. ServerAlias ErrorLog "logs/-error.log" CustomLog "logs/-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>

 

 先看

<VirtualHost *:80>   VirtualHost 后面的参数表示的是该VHost的IP/域名/和端口, 你可以写 : <VirtualHost 175.2.22.65:8088>, 访问的时候通过IP访问

(2) Domain, 例如 <VirtualHost >, 访问的时候通过域名访问, 也可以指定里面的ServerName来指定域名

      (3) *, 表示匹配所有对Apache监听主机的请求, 只要是apache监听到的请求都可以匹配该虚拟主机

     此处表示的就是监听所有80端口的请求, 但是由于ServerName里写了www., 所以这个vhost匹配的是www.:80,

  

  现在看正向代理设置那一段

  • ProxyRequests On:开启Apache正向代理
  • ProxyVia On:控制位于代理服务器链中的代理请求的流向

  引用Apache2.2官方文档中对ProxyVia的解释如下:

  • 如果设置为默认值Off ,将不会采取特殊的处理。如果一个请求或应答包含"Via:"头,将不进行任何修改而直接通过。
  • 如果设置为On每个请求和应答都会对应当前主机得到一个"Via:"头。
  • 如果设置为Full ,每个产生的"Via:"头中都会额外加入Apache服务器的版本,以"Via:"注释域出现。
  • 如果设置为Block ,每个代理请求中的所有"Via:"头行都将被删除。且不会产生新的"Via:"头。
    • <Proxy *>...</Proxy>:用来控制谁可以访问你的代理
    1 <Proxy *> 2 Order deny,allow 3 Deny from all 4 Allow from 127.0.0.1 5 </Proxy>

         此处设置为本机可以使用代理,真正使用的时候就自己设置了

     

    1.2 浏览器设置(以FireFox为例)

     

    1.3 访问效果

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

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

     

    2. 反向代理

    2.1 Apache设置

    1 <VirtualHost *:80> 2 ServerAdmin prograsliu@ 3 DocumentRoot "D:/www/test" 4 ServerName www. 5 ServerAlias 6 ErrorLog "logs/-error.log" 7 CustomLog "logs/-access.log" common 8 Alias /sublook "D:/www/test/look/sublook/" 9 <Directory "D:/www/test"> 10 Options FollowSymLinks 11 AllowOverride All 12 Order allow,deny 13 Allow from all 14 </Directory> 15 16 #反向代理设置 17 ProxyPass /proxy http://www.proxypass.com/proxy 18 ProxyPassReverse /proxy http://www.proxypass.com/proxy 19 20 </VirtualHost> 21 22 <VirtualHost *:80> 23 ServerAdmin prograsliu@ 24 DocumentRoot "D:/www/proxypass" 25 ServerName www.proxypass.com 26 ServerAlias proxypass.com 27 <Directory "D:/www/proxypass"> 28 Options FollowSymLinks 29 AllowOverride All 30 Order allow,deny 31 Allow from all 32 </Directory> 33 </VirtualHost>

     

     

    现在看反向代理设置那一段

    • ProxyPass /proxy http://www.proxypass.com/proxy : 将 www./proxy 域下的所有请求转发给 www.proxypass.com/proxy 代理,例如 www./proxy/login.php 会交给 www.proxypass.com/proxy/login.php 代理
    • ProxyPassReverse /proxy http://www.proxypass.com/proxy :

           www.proxypass.com/proxy/login.php 中有如下代码:

    1 <?php 2 header('Location: http://www.proxypass.com/proxy/result.php'); 3 ?>

     

     

           那么在重定向的时候,Apache会将HTTP请求重新设为 http://www./proxy/result.php, 这样的作用稍后讲解

          www.proxypass.com/proxy/result.php 中有如下代码:  

    1 <?php 2 echo 'in proxypass.com <br>'; 3 ?>

     

     

    2.2 浏览器访问效果

    访问 www./proxy/login.php

    • Apache将请求交给 www.proxypass.com/proxy/login.php 代理,HTTP请求如图:

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

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

    页面显示

     in proxypass.com

    HTTP请求如图:

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

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

     

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

      你可能想看:

      扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/32065.html

      分享给朋友:

      “Apache配置正向代理与反向代理apache反向代理服务器” 的相关文章

      NameSilo优惠码:轻松注册域名,享受超值折扣

      NameSilo优惠码的作用与优势 NameSilo作为一家知名的域名注册服务商,以其价格实惠和服务稳定赢得了众多用户的青睐。对于新用户来说,NameSilo提供的优惠码是一个不可错过的福利。使用优惠码可以在注册域名时直接减免费用,比如常见的1美元立减优惠。这种优惠不仅降低了用户的初始成本,还让注册...

      如何在Linux中指定DNS服务器设置教程

      在开始讨论如何在Linux系统中指定DNS之前,我们需要明白DNS服务器的作用与重要性。DNS,全称域名系统,是将人类易读的域名转换为计算机能够理解的IP地址的系统。想象一下,如果没有DNS,我们每次访问一个网站都得记住复杂的数字IP地址,那将是多么麻烦的一件事。因此,选择一个合适的DNS服务器,不...

      iHerb优惠码使用指南:最大化你的购物折扣

      在现代生活中,网络购物已经成为很多人日常消费的一部分,尤其是像iHerb这样的电商平台,提供了丰富的天然保健品和生活必需品。对于我们消费者来说,iHerb优惠码就是一个能够让购物更加实惠的绝佳工具。 iHerb优惠码是一种特殊的代码,用户在结账时输入这些代码,就可以享受相应的折扣。无论是新用户还是老...

      Linode Speed Test: 提升云服务性能的关键指南

      从2003年成立以来,Linode已经在云计算领域中扮演了重要角色。作为一家美国主机服务商,它的目标是为开发者提供全面而灵活的云计算解决方案。个人开发者、小型企业甚至大型企业都能在这里找到适合自用的工具。Linode不止提供基础的主机服务,还围绕开发者的需求不断迭代产品,确保用户体验越发顺畅。 同时...

      恒创科技:引领数据中心与网络安全解决方案的先锋

      恒创科技这个名字,对于熟悉科技行业的人来说,或许并不陌生。它是一个多元化的品牌,涉及数据中心、网络安全、软件开发和智慧城市解决方案等多个领域。我对这家公司一直抱有浓厚的兴趣,因为它所提供的服务非常全面,能够满足不同行业的需求。 在我看来,恒创科技一直努力将最先进的技术应用于实际场景中,尤其是在互联网...

      如何使用DigitalOcean优惠码获取200美元免费额度

      DigitalOcean是一家备受赞誉的云计算服务提供商,专门致力于为开发者和初创公司提供一流的云基础设施解决方案。通过其简单易用的界面和高效的性能,DigitalOcean帮助用户轻松地部署和扩展应用程序。我在使用DigitalOcean时,深刻感受到了它为开发者量身定制的便捷性,毫无疑问,这使得...