[转]Apache VirtualHost的用法

文章描述了在科特迪瓦现场遇到的需求,即同一台服务器上部署了两个应用,需要通过不同的域名进行访问。最初使用防火墙和DNS配置解决,但受限于防火墙版本不支持配置多个公网IP。随后提出了在Apache2.2中使用Virtual Host+AJP实现转发的软件级解决方案,尽管性能稍逊,但提供了一种替代方法。同时提到了另一种基于iptables的domain module的方案,但由于配置复杂性和风险较高而未采用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2007-06-12 4:20

转自:http://hi.baidu.com/zzeric/blog/item/b6ae6901aced4b0f7aec2c78.html

最近mCentrix组在科特迪瓦的现场发回来这么一个需求:

同一台服务器上有两个应用,如
http://hostA:8080/serviceshttp://hostA:8080/admin
外部访问时,需要从不同的域名访问,如
http://services.host.comhttp://admin.host.com

一开始给他们这么一个比较简单的解决方案:
分别把services和admin两个应用,部署到不同的两个端口上,如
services -> http://hostA:8081/
admin -> http://hostA:8082/
接着在防火墙配两个公网IP,然后dns上把services.host.com和admin.host.com配置到这两个IP上。
当请求到达防火墙时,防火墙根据所访问的ip转发到hostA的对应端口上。

前方用的防火墙是我们公司的Audemon 100,和公司的Audemon系统组的交流后得知,目前的防火墙版本不支持同时配置两个ip,要到六月底才能出版本支持。!@…%#%…%¥,晕倒,好像这是很基本的功能来的吧,居然还不支持。没办法,此路不通。由于防火墙是不管域名的(因为域名资料是通过应用层传输的),那更别指望防火墙根据域名转发了。

因此,我们只好提供了软件级的解决方案,让前方在Tomcat前加一个Apache 2.2,通过Apache的Virtual Host + AJP实现转发。

Apache的部分配置如下:

NameVirtualHost *:80

<VirtualHost *:80>
ServerName host1.com
ProxyPass / ajp://host1.com:8009/
ProxyPassReverse / ajp://host1.com:8009/
</VirtualHost>

<VirtualHost *:80>
ServerName host2.com
ProxyPass / ajp://host2.com:8019/
ProxyPassReverse / ajp://host2.com:8019/
</VirtualHost>

Tomcat也需要配置AJP Connector,如host1.com的配置
<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

这个方案相对于防火墙的硬件方案,性能上要差一些,但还是不错的。

另外还有一种方案是通过iptables的domain module来实现,但这个domain module好像是国内的某个高手写的,只更新到v0.02版本,并没有提交到iptables的标准里。虽然可以用而且性能比Apache的方案要高一些,但是风险较大,而且配置麻烦(既要编译内核,又要配置iptables的rules),所以没有用这种方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值