Apache 部署到Tomcat时忽略grails.app.context
我有一台Apache服务器代理从Apache 部署到Tomcat时忽略grails.app.context,apache,tomcat,grails,Apache,Tomcat,Grails,我有一台Apache服务器代理从mainhost.com/subdirectory到someec2instance/subdirectory的所有流量。当我启动Apache并点击someec2instance.com时,我得到了根war页面。那很好。如果我将我的应用程序部署为ROOT.war,那么在someec2instance.com上一切都可以正常运行 但是,当我访问mainhost.com/subdirectory时,所有资产URL和指向URL的链接都是错误的,并且指向mainhost.c
mainhost.com/subdirectory
到someec2instance/subdirectory
的所有流量。当我启动Apache并点击someec2instance.com
时,我得到了根war页面。那很好。如果我将我的应用程序部署为ROOT.war,那么在someec2instance.com上一切都可以正常运行
但是,当我访问mainhost.com/subdirectory
时,所有资产URL和指向URL的链接都是错误的,并且指向mainhost.com
而不是mainhost.com/subdirectory
我已经设置了grails.app.context
,并通过application.properties
确认正在设置正确的grails.env
当我部署为ROOT.war
时,为什么不尊重grails.app.context
?我希望该站点可以在somec2instance.com/context
上访问,但它好像完全忽略了grails.app.context
。原因是这些设置不起作用,是为了在本地运行,而不是作为WAR文件部署时。当您在runapp
中使用tomcat或jetty插件时,我们将容器配置为使其看起来像在运行一场“爆炸式”战争(类似于战争被各种服务器解包到文件系统时)。由于容器是在嵌入式模式下运行的,因此可以根据需要以编程方式轻松配置它
但是,当您部署WAR文件时,没有什么可配置性那么多。在runapp
中,Grails的构建逻辑启动服务器、配置服务器并部署应用程序,但部署到“真实”服务器的WAR文件由服务器管理,而不是由服务器管理。是的,它忽略Grails.app.context。您需要将ROOT.war重命名为ContextName.war。我认为需要更改apache配置以支持这一点,但最终这是更好的方法。我现在没有访问apache的权限,所以我会在访问时尝试。这很有意义。如果我部署在contextined.war,看起来一切正常。我只需要将apache配置为正确的代理。