[转]Apache VirtualHost的用法

来源:互联网 发布:室内装修设计图软件 编辑:程序博客网 时间:2024/05/18 03:20

2007-06-12 4:20

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

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

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

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

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

因此,我们只好提供了软件级的解决方案,让前方在Tomcat前加一个Apache 2.2,通过Apache的VirtualHost + 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来实现,但这个domainmodule好像是国内的某个高手写的,只更新到v0.02版本,并没有提交到iptables的标准里。虽然可以用而且性能比Apache的方案要高一些,但是风险较大,而且配置麻烦(既要编译内核,又要配置iptables的rules),所以没有用这种方式。