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

标签 apache tomcat grails deployment

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

我可以得到它,这样

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

有效,但我想要的是

http://virtualhost1.example.com/

直接转到我的应用程序。网络上的许多教程站点只是让您将网络应用程序设置为“ROOT”应用程序,但这在多个 grails-app 虚拟主机环境中不起作用。

我尝试使用

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

tomcat/conf/server.xml 文件中的标签,但它似乎没有做任何事情(而且,是的,我每次更改它时都重新启动了 tomcat。)

我还在虚拟主机的 apache 配置文件中尝试了我能想到的所有方法,但无法让它工作。

那么,当我有多个 grails web 应用程序、虚拟主机并且我不想让我的 web 应用程序成为“ROOT”时,我该如何去掉 URL 中的应用程序名称?

最佳答案

我假设您使用的是 mod_jk连接 Apache 和 Tomcat。如果是这样,您将不得不configure virtual hosting within Tomcat as well as Apache (多个 <Host> declarations 在您的 conf/server.xml 中)

这基本上意味着您将有两个 <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>”的 DNS 之后s'(很像 Apache),您必须将 ROOT.war(s) 放入单独的文件夹 {renapps,stimpyapps} 而不是默认的“webapps”文件夹

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

让我们知道您发现了什么!其他人使用 mod_proxy 执行此操作?

关于apache - 使用 Apache/Tomcat + 虚拟主机部署多个 grails 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1805812/

相关文章:

tomcat - HTTP 状态 500 - oracle.adfinternal.controller.faces.context.StubJSFPageLifecycleContext 无法转换为

java - netbeans 上的功能项目在 apache tomcat 中引发异常

Apache 代理 cookie 仅适用于第一个应用程序

grails - Grails 3.2.2 spring-security-ui覆盖RegisterController不起作用

grails - 在 Grails 2.3.6 中定义备用连接池

apache - 如何在本地主机上正确启用 SSL

apache - 子域路由在 Laravel 5 上不起作用 - WAMPServer

java - NTLM 身份验证的客户端资源发布失败。适用于 apache 中的基本身份验证

validation - Grails - 防止对集合进行验证?

apache - 如何使用 Apache 2.0 将 IE 8 浏览器的 X-UA-Compatible header 设置为 IE=EmulateIE7?