Apache正反向代理

有三台服务器:debian系统

    192.168.21.175:双网卡,eth0通外网,eth1可以和192.168.71.x网段相同

    192.168.21.187:单网卡,只能在192.168.21.x网段内通讯,必然可以和21.175通讯

    192.168.71.72:单网卡,只能和71.175通讯,无法和192.168.21.x网段的其他机器通讯

需求1:在71.72上面部署了一个web应用,想在21.187上访问71.72上的web应用。

需求2:在71.72上面可以访问Internet上的的所有web站点。

   经过分析后,需求1可以通过web反向代理实现,需求2可以通过正向代理实现,web代理部署在21.187上面。我们用apache来实现web代理。


Apache可以被配置为正向(forward)和反向(reverse)代理。

   正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

    正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性(由mod_cache提供)减少网络使用率。使用ProxyRequests指令即可激活正向代理。因为正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。

   反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。

   反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。可以使用ProxyPass指令激活反向代理。配置反向代理并不需要打开ProxyRequests指令

需求1实现(reverse proxy):

在71.72和21.175上安装apache2软件

1 apt-get install apache2

71.72的apache配置,只要设置一个测试站点即可


#/etc/apache2/sites-enabled/000-default
02 <VirtualHost *:80>
03     ServerAdmin webmaster@localhost
04         servername  192.168.71.72  
05     DocumentRoot /var/www/
06     <Directory />
07         Options FollowSymLinks
08         AllowOverride None
09     </Directory>
10     <Directory /var/www/>
11         Options -Indexes FollowSymLinks MultiViews
12         AllowOverride None
13         Order allow,deny
14         allow from all
15     </Directory>
16     LogLevel warn
17     CustomLog /var/log/apache2/access.log combined
18 </VirtualHost>
19  
20 #/var/www/index.html
21 I'm 192.168.71.72

    重启apache生效配置

21.175的apache配置,需要在该服务器上配置反向web代理,需要启动proxy模块,Apache的代理功能(除mod_proxy以外)被划分到了几个不同的模块中,就必须将mod_proxy和对应的模块同时加载到服务器中。

启动相关proxy模块

1 a2enmod proxy
2 a2enmod proxy_http
apache配置


<VirtualHost *:80>
02     ServerAdmin webmaster@localhost
03         Servername  192.168.21.175 
04     DocumentRoot /var/www/
05         ProxyRequests Off
06         ProxyPass / http://192.168.71.72/index.html
07         ProxyPassReverse  / http://192.168.71.72/index.html
08         <Proxy *>
09            Order Deny,Allow
10            Deny from all
11            Allow from 192.168.21.187
12         </Proxy>
13     ErrorLog /var/log/apache2/error.log
14     LogLevel warn
15     CustomLog /var/log/apache2/access.log combined
16 </VirtualHost>
   重启apache生效配置

在21.187进行测试,需要在21.187做hosts。


需求2实现(forward proxy):

   需求2主要是在21.175上实现正向代理,客户端在在访问外部Internet的时候只需要设置浏览器的代理地址即可。

apache配置如下:




#/etc/apache2/sites-enabled/001-default
02 <VirtualHost *:80>
03     ServerAdmin webmaster@localhost
04         Servername  192.168.21.175 
05     DocumentRoot /var/www/
06         ProxyRequests On
07         ProxyVia On
08         <Proxy *>
09            Order Deny,Allow
10            Deny from all
11            Allow from 192.168.71.72
12         </Proxy>
13     ErrorLog /var/log/apache2/error.log
14     LogLevel warn
15     CustomLog /var/log/apache2/access.log combined
16 </VirtualHost>

重启后发现代理无法使用,提示没有权限,经排查后发现debian在proxy模块的默认配置文件中加载了一段代码,默认把正向代理关闭了,我们只要注释掉该代码就可以了。 

在71.72上进行测试:


用了一段时间后,突然觉得在71.72使用正向代理有点不爽,如果想在Internet上干其他事呢,考虑让21.175做71.72的网关,然后71.72通过21.175上网。
#/etc/apache2/sites-enabled/001-default
02 <VirtualHost *:80>
03     ServerAdmin webmaster@localhost
04         Servername  192.168.21.175 
05     DocumentRoot /var/www/
06         ProxyRequests On
07         ProxyVia On
08         <Proxy *>
09            Order Deny,Allow
10            Deny from all
11            Allow from 192.168.71.72
12         </Proxy>
13     ErrorLog /var/log/apache2/error.log
14     LogLevel warn
15     CustomLog /var/log/apache2/access.log combined
16 </VirtualHost>

重启后发现代理无法使用,提示没有权限,经排查后发现debian在proxy模块的默认配置文件中加载了一段代码,默认把正向代理关闭了,我们只要注释掉该代码就可以了。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值