如何将子域定向到正确的 JBoss 应用程序?
Posted
技术标签:
【中文标题】如何将子域定向到正确的 JBoss 应用程序?【英文标题】:How to direct subdomains to the correct JBoss App? 【发布时间】:2010-12-03 03:35:08 【问题描述】:JBoss 新手,正在配置一些应用程序。我知道如何在 apache 网络服务器中执行此操作,但不使用 Jboss。
我已经在一个redhat box JBoss 4.2上成功部署了3个应用程序。
如果我的服务器叫fruit.mycompany.com,我可以这样访问这三个应用:
http://fruit.mycompany.com:8080/quince
http://fruit.mycompany.com:8080/pineapple
http://fruit.mycompany.com:8080/lime
接下来,我创建了三个子域,它们是服务器fruit的别名。
http://quince.mycompany.com
http://pineapple.mycompany.com
http://lime.mycompany.com
如何让每个子域指向其对应的应用程序?
我想让http://quince.mycompany.com 真正打开http://fruit.mycompany.com:8080/quince。
在 apache 中,我会使用 VirtualHost 标记将每个子域指向正确的文档根目录。我如何使用 JBoss 或 Tomcat 做到这一点?
我可以通过重定向来做到这一点(Tomcat 是否有类似 mod_rewrite 的东西)?
【问题讨论】:
【参考方案1】:你看过 Tomcat Mod_jk http://tomcat.apache.org/connectors-doc/ 吗?
【讨论】:
【参考方案2】:Tomcat 支持virtual hosts。你基本上必须:
1) 将 tomcat 的“监听”端口改为 80 而不是 8080。
2) 修改tomcat的server.xml
,列出你的服务器:
<Engine name="Catalina" defaultHost="quince">
<Host name="quince" appBase="quince_apps"/>
<Host name="pineapple" appBase="pineapple_apps"/>
<Host name="lime" appBase="lime_apps"/>
</Engine>
3) 将每个应用程序移动到相应“_apps”文件夹的“ROOT”文件夹中。
当我遇到类似情况时,我选择使用 Apache 重定向来代替;但是我已经让 Apache 提供静态页面(公共网站)。
【讨论】:
【参考方案3】:我放弃了 Tomcat。
情况变得太复杂了。 我已经在端口 80 上运行了一个网站(在 JBoss 的单独实例上)。 我有这三个应用程序,木瓜、菠萝和酸橙在它们自己的 JBoss 实例上运行,端口为 8080。
为了解决我的问题,我只是在80端口上运行的网站的索引页面上写了一个javascript函数。
我检查 location 以查看正在调用哪个域,然后重定向到端口 8080 上的相应网站。
脚本如下所示:
var whois=location+" ";
if (whois.indexOf("quince.mycompany.com") > -1)
setTimeout('window.location.replace("http://quince.mycompany.com:8080/quince/");', 10);
exit;
if (whois.indexOf("lime.mycompany.com") > -1)
setTimeout('window.location.replace("http://lime.mycompany.com:8080/lime/");', 10);
exit;
...
// otherwise redirect to the app running on port 80
setTimeout('window.location.replace("http://fruit.mycompany.com/otherapp/");', 10);
这并不是我想要的,但至少我的用户现在有了一个快捷 URL,而且他们不必记住端口号: http://lime.mycompany.com 重定向到 -> http://lime.langara.bc.ca:8080/lime
【讨论】:
我真的不认为这是最佳的做法,但就像你一样,我厌倦了绕圈子跑。所以+1给你的答案,非常有用。以上是关于如何将子域定向到正确的 JBoss 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在Heroku上使用Zerigo DNS将根级域重定向到www子域? [关闭]
如果路由不在子域中,Laravel 子域路由重定向到 404