防火墙上的Apache反向代理

技术分享 Story 75浏览 0评论
摘要

防火墙上的Apache反向代理

防火墙上的Apache反向代理

本文介绍在企业防火墙上编译和设置带有反向代理功能的Apache, 以极具弹性的虚拟主机设置允许外部用户通过防火墙存取内部局域网上众多的WEB服务器。

虚拟环境

有一小区,内部使用伪ip,大家通过一FreeBSD网关使用ip欺骗上网,现在有的内部用户要对外发布信息,要建立自己的www服务器。但是因为内部使用的是保留ip,必须采取一定的手段来实现从Internet到内部www主机的访问,比较常用的方法是端口转发(用rdr实现)。有没有更成熟的软件可以实现基于URL的反向NAT,也就是说,每个内部的www主机都解析到Freebsd网关的外部网卡,当收到如www.1.com的请求时,网关可以自动转发到真实的www.1.com(假设为192.168.1.1),收到www.1.com的响应后再改写源地址为网关的真实ip地址返回给internet用户。也就是说可以工作在应用层进行分析转发,同时工作在网络层进行地址改写。

反向web代理,除了上述的端口转发外,还可用apache实现,当仍squid的加速模式同样可实现。下面,具体介绍apache反向web代理的实现。

网络拓扑:

一台apache服务器(双网卡)用专线接入Internet作为防火墙,在内部网段上有多台WWW服务器希望这台机器能使供外部世界访问指定的WWW服务器。

这台机器真实ip地址为111.111.111.111,内部ip地址172.16.1.1

内部网段上有三台web服务器:

www1(172.16.1.101)

www2(172.16.1.102)

www3(172.16.1.103)

这三台web服务器类型不限,可以是apache,也可用IIS或其他系统。

外部dns服务器指定

www1.xxx.com(111.111.111.111)

www2.xxx.com(111.111.111.111)

www3.xxx.com(111.111.111.111)

实现步骤:

1、更改源代码使得最大允许的请求连接数目超过256,因为,默认的Apache允许的最多连接数目为256,在一个繁忙的网站上可能会不够,特别是本文介绍的通过防火墙上的Apache反向代理允许外部用户存取多台内部WEB服务器,可更改文件src/include/httpd.h。

在打入vi src/include/httpd.h命令后,打入"/256"然后按回车去搜索数字256,改为1024后保存退出。

2、编译Apache

#./configure --prefix=/usr/local/apache \ 设置安装前缀目录

--enable-module=most \ 启动大多数模块

--enable-shared=max \ 安装大多数模块为DSO(动态共享对象)

--enable-module=proxy \ 启动代理模块

--enable-shared=proxy \ 安装代理模块为DSO

--enable-module=rewrite \ 启动重写模块

--enable-shared=rewrite 安装重写模块为DSO

(最后两个开关可以不用)

#make install

3、在httpd.conf中设置名字虚拟主机,加下面的行到/usr/local/apache/conf/httpd.conf最后面。

NameVirtualHost 111.111.111.111

<VirtualHost 111.111.111.111>

ServerName www1.xxx.com

ProxyPass / http://172.16.1.101/

ProxyPassReverse / http://172.16.1.101/

</VirtualHost>

<VirtualHost 111.111.111.111>

ServerName www2.xxx.com

ProxyPass / http://172.16.1.102/

ProxyPassReverse / http://172.16.1.102/

</VirtualHost>

<VirtualHost 111.111.111.111>

ServerName www3.xxx.com

ProxyPass / http://172.16.1.103/

ProxyPassReverse / http://172.16.1.103/

</VirtualHost>

转载请注明:成长的对话 » 防火墙上的Apache反向代理