其实配置虚拟主机的文章很多,Apusic应用服务器管理文档中已有专门的描述,我这里写的最重要是虚拟主机有啥用,是否还有其他解决方案。
这篇文章是从最近的工作中得来的,最初需求是要配置虚拟主机,结果采用的是写了一段代码进行代替。两种方法不分高低,可能对于喜欢规范的朋友会鄙视我的变通方式,觉得俺的东西不遵守规范,给未来又留下多少隐患之类,但是我认为写代码对国内项目来说,由于都是程序员现场实施,因此未来的变化更加好控制。最后,我还会提供一种更为复杂,但是更为先进的虚拟机方式就是Apache+Apusic整合的方式,这样结果会更灵活,当然维护成本也就更高。
先介绍为什么要配虚拟主机,给客户到底带来什么价值呢?
一般是主机提供商喜欢用虚拟主机,他们将一个服务器资源分配给许多客户使用,每个客户有自己的域名,有权访问自己虚拟主机部署的应用。而现在政府客户为了突出部门的独立性也喜欢申请单独的域名,通过不同的域名访问部门自己的门户系统,但是这些应用部署在统一对外的服务器上,甚至由一个J2EE应用提供不同的门户。
那么虚拟主机又是如何运作的呢?
虚拟主机首先是域名的不同,域名由DNS服务器解析成IP地址。如果那些应用都部署在统一对外的服务器上,那么不同的域名将会解析成相同的IP地址返回给浏览器。浏览器依据这个IP地址访问应用服务器,并且会把访问用的URL带在HTTP头中。如果访问的应用都使用相同的路径(<context-root>/</context-root>),这些应用就会在部署时发生冲突。为了解决这样的冲突,应用服务器中间件就提供了虚拟主机的方式,等于在一个应用服务器中间件上可以虚拟出好几个计算机,当然部署相同上下文名称的应用也就不会再有问题。应用服务器通过判断HTTP头中的URL来决定采用哪个虚拟主机中的应用提供服务。
Apusic如何配置虚拟主要呢?
修改config/server.xml文件增加virtual-host参数就可以实现。这个实验在本机也可以测试,测试过程如下:
1. 修改Windows/system32/drivers/etc/hosts. 文件,模仿localhost增加
127.0.0.1 localhost1
127.0.0.1 localhost2
2. 与applications目录平级建立一个webapp目录(名称随意,主要是避免放在applications目录下,应用被自动发布),复制applications目录下的default目录到webapp目录中,并将目录改成default1和default2
3. 修改server.xml文件,模仿default增加
<application name="default1" base="webapp/default1" virtual-host="localhost1" start="auto"/>
<application name="default2" base="webapp/default2" virtual-host="localhost2" start="auto"/>
4. 启动apusic应用服务器,你会发现有相同上下文Context Root的应用被启动。
5. 修改每个应用的index.jsp文件,增加区分标识,然后通过不同的URL(http://localhost:6888或http://localhost1:6888)访问,会得到不同应用的显示页面。
现在大家已经成功完成虚拟主机的配置,但是使用虚拟主机存在什么问题呢?
1. 如果这些应用是相互独立的,那么他们之间的会话(Session)数据是无法共享的,应用相关的页面和风格无法共享,用户需要维护多个应用增加了维护成本;
2. 如果这些页面统一跳转到一个应用的不同目录下,那么浏览器的URL就会变成部署应用的虚拟主机域名,但是这个可能不是用户所希望的。
新的用户需求,因为用户其实只采购了一个应用,但是希望不同的域名有不同的门户主页,于是我的解决方案是应用只有一个,在应用里面建立default1和default2目录,那么用户访问服务器时,系统会根据URL的不同进行跳转,判断URL的代码如下:
<html>
<head>
</head>
<body>
<script type="text/javascript">
var aHost=window.location.hostname; //取得访问应用服务器使用的域名
if (aHost=="localhost1")
window.location.href="http://localhost:6888/default1";
else if (aHost=="localhost2")
window.location.href="http://localhost:6888/default2";
else alert("nothing happen!");
</script>
</body>
</html>
这种访问,无论如何跳转域名都不会发生改变,而且跳转到其他门户时会话数据可以共享,简化了SSO(单点登录)的开发难度。但是,这种方式也有缺陷就是访问时上下文必须不同,而且无法让所有的域名使用相同的上下文,特别是都使用根目录。因此,采用哪种方式看用户的需要。
但是,维护者可能还是觉得复杂,因为要动底层代码,是否还有完全配置的解决方案吗?
有!那就是用Apache+Apusic配置虚拟主机,整个操作过程如下:
1. 先在Apusic的默认default应用中增加两个目录default1和default2,修改index.jsp文件方便显示后区分;
2. 修改Apache的配置文件httpd.conf,增加虚拟主机的配置,通过Apache的虚拟主机+代理跳转的方式,提供对虚拟主机的支持,增加部分如下:
#以下增加的模块部分无用,只是我没时间查证,所以都打开了。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
NameVirtualHost *:8080
<VirtualHost *:8080>
ProxyPreserveHost On
ServerAdmin zhuyuanxiang@apusic.com
ServerName localhost
ProxyPass / http://localhost:6888/
ProxyPassreverse / http://localhost:6888/
</VirtualHost>
<VirtualHost *:8080>
ProxyPreserveHost On
ServerAdmin zhuyuanxiang@apusic.com
ServerName localhost1
ProxyPass / http://localhost:6888/default1/
ProxyPassreverse / http://localhost:6888/default1/
</VirtualHost>
<VirtualHost *:8080>
ProxyPreserveHost On
ServerAdmin zhuyuanxiang@apusic.com
ServerName localhost2
ProxyPass / http://localhost:6888/default2/
ProxyPassreverse / http://localhost:6888/default2/
</VirtualHost>
3. 启动apusic应用服务器,通过http://localhost:8080和http://localhost1:8080和http://localhost2:8080就可以得到不同的展示页面。
(后两个页面显示不正确,因为它们的图片路径不正确,在后台他们其实使用的不是前台显示的路径,因此服务器无法找到图片)
这个就使不同虚拟主机都以根路径的方式显示不同的门户,同时在后台应用服务器上可以共享应用,但是同时也带来了潜在的维护成本和系统风险。
那么到底采用什么样的方式配置虚拟主机呢?
其实这个需要实际场景来决定,以下几个条件可以参考:
1. 是否需要共享应用?
2. 是否需要都使用根路径?
3. 是否需要通过Apache来提供负载均衡?
根本目标是开发和维护简单化,够用就是最好的,做技术的朋友最怕追求技术先进性。
参考文献:
1. mod_proxy - Apache 2.2 中文版参考手册,
http://doc.chinahtml.com/Manual/ApacheManual/mod/mod_proxy.html
2. 基于反相代理的Web缓存加速
http://www.chedong.com/tech/cache.html
分享到:
相关推荐
Apache2.2+Apusic6.0负载配置指南主要涉及两个...以上就是Apache2.2和Apusic6.0联合配置实现负载均衡的关键步骤和相关知识点,通过这样的配置,可以构建一个高效、可靠的Web服务环境,确保在高并发访问时能够稳定运行。
【Apusic5.1域配置】是针对Apusic5.1服务器的一项关键操作,它涉及到服务器的管理和应用部署。Apusic(全称Apsara Music)是阿里巴巴集团研发的企业级中间件,主要用于构建高可用、高性能的企业级服务系统。本指南将...
管理 Apusic Web 服务器的配置文件 apusic.conf 位于安装目录下的 config 目录中,该配置文件包含了 Web 服务器的配置段。通过修改配置段中的可配置属性,可以对 Web 服务器进行管理。 Web 服务器的属性包括: 1. ...
本文将详细介绍如何在Apusic服务器中设置数据源的资源引用,并提供具体的配置示例。 #### 二、数据源资源引用的概念 数据源的资源引用是指在Java应用程序中通过特定的命名机制来引用外部资源(如数据库连接池)。...
在Apusic系统中,管理员用户(admin)是最基本也是最重要的账户之一,用于进行系统的管理和配置工作。为了保障系统的安全性,定期更换密码是必要的。 **操作步骤:** 1. **登录Apusic控制台:**通过IE浏览器或其他...
1. **AASv9-开发插件配置说明.pdf**:这是一份详细指南,介绍了如何配置和使用金蝶Apusic中间件AAS v9版本的开发插件。它通常会包含安装步骤、配置参数、以及如何在Eclipse或MyEclipse中集成这些插件的说明。通过...
总的来说,金蝶Apusic V10应用服务器用户管理手册详细介绍了产品的安装、配置、使用和管理,是用户快速掌握该产品并成功部署企业级应用的宝贵资源。无论是新手还是经验丰富的管理员,都能从中受益,提升工作效率,...
该攻略主要用于在apusic文件中配置数据库连接,以便在应用程序中使用数据库资源。 1. 配置数据源 在apusic文件中,配置数据源是实现数据库连接的第一步。数据源的配置包括两个部分:JNDI名称和驱动程序类名称。在...
本手册旨在指导用户在 Windows 2003 操作系统上安装和部署 Apusic 6.0,旨在帮助用户快速掌握安装和配置 Apusic 6.0 的步骤。 一、安装准备 在开始安装 Apusic 6.0 之前,需要检查硬件和软件要求是否满足以下条件...
金蝶中间件(Apusic)--license
安装或使用EAS Apusic时,正确配置和使用这个许可证文件是至关重要的,因为它决定了软件能否正常运行以及运行的合法期限。 总之,EAS Apusic 2016是一个功能强大的企业级应用服务器,它为企业提供了稳定、安全、...
Apusic 7.0,2014,license,
它包含了丰富的内置功能,如代码编辑器、项目管理、数据库连接、服务器配置、调试工具等。而金蝶中间件Apusic的插件则增强了MyEclipse的功能,特别是在企业级应用开发领域,提供了对金蝶Apusic应用服务器的无缝集成...
【Apusic应用服务器配置管理】 Apusic应用服务器是一款基于Java EE规范的应用服务器,它提供了运行和管理企业级Java应用程序的平台。本文档详细介绍了Apusic应用服务器的配置管理,包括服务器域的管理、J2EE应用的...
在安装和配置Apusic5.0时,用户需要按照指南输入或导入此许可证文件,以确保软件能够正常启动并运行。 在实际操作中,企业应妥善保管这个许可文件,避免丢失或泄露,同时也要关注软件的更新和维护,确保其始终处于...
Apache 集群配置与 Apusic 应用服务器整合是实现高可用性和负载均衡的重要方法。在这个配置中,Apache 作为前端的负载均衡器,负责接收客户端请求并根据预设策略将其分发给后台的 Apusic 服务器。Apusic 是一个企业...
2021年通用apusic license,适用于apusic9.0以上EAS(EAS8.0以上版本一般都可用),有效期到2021年12月31日。此apusic为5个连接数
- **备份数据**:在安装许可证之前,建议备份重要的数据和配置,以防万一出现问题时能够快速恢复。 综上所述,Apusic License 2017 测试许可到2088年的文档提供了关于如何使用Apusic License 2017版本中的测试许可...
1. **AASv9-开发插件配置说明.pdf**:这是一份详细的用户指南,提供了如何在Eclipse或MyEclipse中安装和配置Apusic插件的步骤,以及如何使用这些插件进行开发的指导。这份文档通常会涵盖如何导入项目、设置服务器、...
金蝶Apusic应用服务器6.0是一款标准、安全、高效、集成并且具有丰富功能的企业级应用服务器(Enterprise Application Server),它用于实现基于SOA的企业应用和服务,为企业应用和服务提供坚不可摧的基础架构支撑。...