有三台服务器: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配置,只要设置一个测试站点即可

03 | ServerAdmin webmaster@localhost |
04 | servername 192.168.71.72 |
05 | DocumentRoot /var/www/ |
07 | Options FollowSymLinks |
11 | Options -Indexes FollowSymLinks MultiViews |
17 | CustomLog /var/log/apache2/access.log combined |
重启apache生效配置
21.175的apache配置,需要在该服务器上配置反向web代理,需要启动proxy模块,Apache的代理功能(除mod_proxy以外)被划分到了几个不同的模块中,就必须将mod_proxy和对应的模块同时加载到服务器中。
启动相关proxy模块
apache配置

02 | ServerAdmin webmaster@localhost |
03 | Servername 192.168.21.175 |
04 | DocumentRoot /var/www/ |
06 | ProxyPass / http://192.168.71.72/index.html |
07 | ProxyPassReverse / http://192.168.71.72/index.html |
11 | Allow from 192.168.21.187 |
13 | ErrorLog /var/log/apache2/error.log |
15 | CustomLog /var/log/apache2/access.log combined |
重启apache生效配置
在21.187进行测试,需要在21.187做hosts。
需求2实现(forward proxy):
需求2主要是在21.175上实现正向代理,客户端在在访问外部Internet的时候只需要设置浏览器的代理地址即可。
apache配置如下:
03 | ServerAdmin webmaster@localhost |
04 | Servername 192.168.21.175 |
05 | DocumentRoot /var/www/ |
11 | Allow from 192.168.71.72 |
13 | ErrorLog /var/log/apache2/error.log |
15 | CustomLog /var/log/apache2/access.log combined |
重启后发现代理无法使用,提示没有权限,经排查后发现debian在proxy模块的默认配置文件中加载了一段代码,默认把正向代理关闭了,我们只要注释掉该代码就可以了。
在71.72上进行测试:
用了一段时间后,突然觉得在71.72使用正向代理有点不爽,如果想在Internet上干其他事呢,考虑让21.175做71.72的网关,然后71.72通过21.175上网。
03 | ServerAdmin webmaster@localhost |
04 | Servername 192.168.21.175 |
05 | DocumentRoot /var/www/ |
11 | Allow from 192.168.71.72 |
13 | ErrorLog /var/log/apache2/error.log |
15 | CustomLog /var/log/apache2/access.log combined |
重启后发现代理无法使用,提示没有权限,经排查后发现debian在proxy模块的默认配置文件中加载了一段代码,默认把正向代理关闭了,我们只要注释掉该代码就可以了。