如何将子域定向到正确的 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 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何从子域重定向到其他域URI?

.htaccess 如何仅将子域/文件夹重定向到子域

如何在Heroku上使用Zerigo DNS将根级域重定向到www子域? [关闭]

如果路由不在子域中,Laravel 子域路由重定向到 404

Cloudflare DNS - 如何将所有子域重定向到根域?

域重定向到www时如何将www子域重定向到非www