一尘不染

使用Apache / Tomcat +虚拟主机部署多个grails应用程序

tomcat

我还无法弄清楚如何使用Apache / Tomcat部署多个grails应用程序,其中虚拟主机映射到每个grails应用程序

我可以拿到

http://virtualhost1.example.com/myGrailsApplication-0.1/

可以,但是我想要的是

http://virtualhost1.example.com/

直接转到我的应用程序。网络上的许多教程站点只是让您的Web应用程序成为“ ROOT”应用程序,但在多种grails-app虚拟主机环境中无法使用。

我尝试使用

<Host name="virtualhost1.example.com" ...> </Host>

标签在tomcat / conf / server.xml文件中,但是它似乎没有任何作用(是的,每次更改它,我都会重新启动tomcat。)

我还尝试了我在虚拟主机的apache配置文件中想到的所有内容,但无法正常工作。

因此,当我有多个grails网络应用程序,虚拟主机并且不希望我的网络应用程序是“ ROOT”时,如何摆脱URL中的应用程序名称?


阅读 218

收藏
2020-06-16

共1个答案

一尘不染

我假设您正在mod_jk用来连接Apache和Tomcat。如果是这样,您将不得不在Tomcat和Apache中配置虚拟主机(在conf /
server.xml中有多个<Host>声明

这基本上意味着您将<Host ...>在conf /
server.xml中有两个声明。它们将具有不同的名称和appBase,但是您仍然必须将war命名为ROOT.war

他们给出的示例是:

<Engine name="Catalina" defaultHost="ren">
    <Host name="ren"    appBase="renapps"/>
    <Host name="stimpy" appBase="stimpyapps"/>
</Engine>

在配置虚拟“
<host>s”(类似于Apache)的DNS之后,您必须将ROOT.war放入单独的文件夹{renapps,stimpyapps}中,而不是默认的“
webapps”文件夹中

此方法有效,但是还有另一种方法mod_proxy代替mod_jk。我不太熟悉,mod_proxy但是基本上您将拥有连接器句柄将根上下文转换为实际上下文。因此,配置完成后,它将代理并转发发送到http://virtualhost1.example.com/Tomcat(/myGrailsApplication-0.1/)中正确上下文的请求

让我们知道你发现了什么!有人这样做mod_proxy吗?

2020-06-16