这么一个需求:同一台服务器上有两个应用,如
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的对应端口上。
前 方用的防火墙是我们公司的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),所以没有用这种方式。
本文来源于 冰山上的播客 http://xinsync.xju.edu.cn , 原文地址:http://xinsync.xju.edu.cn/index.php/archives/115
<Directory "/var/www/www">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/phorum">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# 针对三部主机的 DocumentRoot 进行定!
<VirtualHost *:80>
ServerName linux.vbird.tsai
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
ServerName www.vbird.tsai
DocumentRoot /var/www/www
CustomLog /var/log/httpd/www.access_log combined
# 不同的主页可以指定不同的登录档资讯,这样比较好 debug 与分析啦!
</VirtualHost>
<VirtualHost *:80>
ServerName phorum.vbird.tsai
DocumentRoot /var/www/phorum
</VirtualHost>
<VirtualHost *>
ServerAdmin xxx@xxx.org
ServerName xxxxx
ProxyRequests Off
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
# reverse proxy setting
ProxyPass / http://192.168.100.8:8180/
ProxyPassReverse / http://192.168.100.8:8180/
# cache dir root
CacheRoot "/var/www/proxy"
# max cache storage
CacheSize 50000000
# hour: every 4 hour
CacheGcInterval 4
# max page expire time: hour
CacheMaxExpire 240
# Expire time = (now - last_modified) * CacheLastModifiedFactor
CacheLastModifiedFactor 0.1
# defalt expire tag: hour
CacheDefaultExpire 1
# force complete after precent of content retrived: 60-90%
CacheForceCompletion 80
ErrorLog /var/log/apache2/error-westdc.geodata.cn.log
CustomLog /var/log/apache2/access-westdc.geodata.cn.log combined
ServerSignature On
</VirtualHost>
分享到:
相关推荐
<VirtualHost *:80> ServerAdmin webmaster@localhost DirectoryIndex index.html index.php DocumentRoot /home/jb51/sites/demo.jb51.net ServerName demo.jb51.net ServerAlias demo.jb51.net Allow ...
例如,如果使用`*`通配符来监听所有IP地址上的请求,则所有`<VirtualHost>`都应使用相同的端口号。 2. **避免混淆IP和端口**: 当使用`NameVirtualHost`指令时,确保不要混用IP地址和端口号。例如,`<VirtualHost ...
这通常通过使用Apache的虚拟主机(VirtualHost)功能实现。虚拟主机允许在一个单一的服务器上运行多个独立的网站,每个网站对应一个不同的域名或子域名。以下是详细的配置步骤和注意事项: 1. **启用VirtualHost...
每个虚拟主机都使用 `<VirtualHost>` 块来定义。例如,对于 `www.website1.com` 和 `website1.com` 的配置如下: ```apache NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/html/website1 ...
要避免这种情况,需要保留一个默认的`VirtualHost`配置,不指定任何IP地址和端口,这样Apache会将所有未匹配的请求转发给这个默认的虚拟主机。例如: ```apacheconf <VirtualHost *:80> DocumentRoot /var/...
这样,Apache将同时监听这三个端口,但为了使每个端口对应不同的网站,需要使用`<VirtualHost>`容器来指定每个端口对应的网站配置。 #### 三、创建虚拟主机 虚拟主机允许在同一台服务器上托管多个独立的网站,每个...
- `<VirtualHost 192.168.16.250:8080>`:定义另一个虚拟主机容器,其中`192.168.16.250:8080`表示该虚拟主机绑定到同一IP地址的不同端口。 - 其余配置项与基于名称的虚拟主机相同。 **3.3 特点与应用场景** - 同...
这个错误是由于Apache无法找到任何与NameVirtualHost指令匹配的VirtualHost配置。 首先,让我们深入理解一下`NameVirtualHost`和`VirtualHost`这两个概念: 1. **NameVirtualHost**: 这个指令告诉Apache启用基于...
使用`<VirtualHost>`标签来定义一个虚拟主机。例如: ```apache <VirtualHost *:80> ServerAdmin webmaster@163.com DocumentRoot "D:\www\smt" ServerName www.smt.com ServerAlias www.smt.com Options ...
配置时,只需在Apache配置文件中使用`VirtualHost`指令,指定`DocumentRoot`(网站根目录)和`ServerName`(主机名),如示例所示: ```apacheconf <VirtualHost *:80> DocumentRoot /www/ghq1 ServerName ...
3. **虚拟主机配置**:可以通过 `<VirtualHost>` 标签在 httpd.conf 文件中定义,包括 `DocumentRoot`(站点根目录)、`ServerName`(域名或 IP)等关键参数。 4. **监听指令**(`Listen`):用来指定 Apache 监听的...
在Apache的配置中,`VirtualHost`指令用于定义一个虚拟主机,即一个独立的网站。我们可以在每个`VirtualHost`块中添加`SetEnv`指令来设置环境变量`PHPRC`,这个变量告诉PHP解释器去寻找对应的`php.ini`文件。 下面...
在Apache中实现域名跳转通常通过`VirtualHost`配置来完成,每个`VirtualHost`段可以定义一个或多个域名,并指定其对应的文档根目录。例如: ```apache <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ...
<VirtualHost *:8080> # 这里填写新虚拟主机的配置信息 </VirtualHost> ``` 此步骤确保新的虚拟主机能够在指定的端口上运行。 ### 3. 创建新的虚拟主机配置文件 为新虚拟主机创建一个专门的配置文件,如`/etc/...
总结,配置Apache的虚拟路径和伪静态涉及到对Apache配置文件的理解和使用,包括设置VirtualHost、启用`mod_rewrite`模块以及编写`.htaccess`文件中的重写规则。这些步骤对于网站的多域名管理以及优化URL结构至关重要...
### Apache Web服务器配置与使用工作笔记 #### 一、Apache Web服务器简介 ...通过上述内容的学习,我们可以更加深入地了解Apache Web服务器的配置与使用方法,为实际工作中搭建和维护网站提供坚实的基础。
本文将深入探讨Apache Ftp Server的使用方法,包括安装、配置、管理以及常见问题解决。 **一、安装Apache Ftp Server** 1. 下载:首先,你需要从Apache官方网站(http://mina.apache.org/ftpserver/download.html...