例如:
我有一个主要临时域
www.product.com
对于每个客户端,我需要将单独的子域映射到具有相同端口(80)但具有不同实例名称(不同.wars文件)的同一服务器
www.client1.product.com
www.client2.product.com
www.clientn.product.com
(如果我错了,请纠正我)据我所知,如果我启动jetty实例,每个实例都会从单独的端口号开始
client1 war will start at port 3001
client2 war will start at port 3002
client3 war will start at port 3003
我的问题是如何将端口 80 的所有实例映射到适当的相同子域
如果我访问
www.client4.product.com
,我需要让 jetty 应用程序在端口 3004 中运行
Update:
为了更好地理解我的架构,如果在端口 3002 上运行的 client2 jetty 实例由于运行时异常或内存泄漏或手动重启而进入关闭状态,则所有其他 jetty 实例独立运行(类似于 google appengine 使用 jetty 背后的架构)
为此,请勿运行多个 Jetty 实例。使用多个 VirtualHost 运行一个实例。为此,您可以像这样配置 jetty:
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="war"><SystemProperty name="jetty.home"/>/webapps/client1.war</Set>
<Set name="contextPath">/</Set>
<Set name="virtualHosts">
<Array type="java.lang.String">
<Item>www.client1.product.com</Item>
</Array>
</Set>
</Configure>
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="war"><SystemProperty name="jetty.home"/>/webapps/client2.war</Set>
<Set name="contextPath">/</Set>
<Set name="virtualHosts">
<Array type="java.lang.String">
<Item>www.client2.product.com</Item>
</Array>
</Set>
</Configure>
Check 这一页 http://wiki.eclipse.org/Jetty/Howto/Configure_Virtual_Hosts#Configuring_Different_Webapps_for_Different_Virtual_Hosts.2C_But_at_the_Same_Context_Path有关如何配置此功能的更多信息。
或者,如果您确实想要拥有多个 Jetty 实例,您可以在它前面使用另一个服务器(例如充当反向代理的 Apache)。然后可以通过编辑 httpd.conf 来使用虚拟主机设置 Apache:
<VirtualHost *:80>
ServerName www.client1.product.com
ProxyRequests off
ProxyPass / http://someInternalHost:3001/
ProxyPassReverse / http://someInternalHost:3001/
</VirtualHost>
<VirtualHost *:80>
ServerName www.client2.product.com
ProxyRequests off
ProxyPass / http://someInternalHost:3001/
ProxyPassReverse / http://someInternalHost:3001/
</VirtualHost>
您可以看到阿帕奇文档 http://httpd.apache.org/docs/2.2/vhosts/name-based.html了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)