grails.app.context 被忽略部署到 Tomcat

grails.app.context being ignored deploying to Tomcat

我有一个 Apache 服务器代理从 mainhost.com/subdirectorysomeec2instance/subdirectory 的所有流量。当我启动 Apache 并点击 someec2instance.com 时,我得到了 ROOT war 页面。那很好用。如果我将我的应用程序部署为 ROOT.war,则一切正常 someec2instance.com

但是,当我访问 mainhost.com/subdirectory 时,所有资产 url 和 link_to url 都是错误的,指向 mainhost.com 而不是 mainhost.com/subdirectory

我已设置 grails.app.context 并通过 application.properties 确认设置了正确的 grails.env

为什么当我部署为 ROOT.wargrails.app.context 没有受到尊重?我希望该网站可以在 someec2instance.com/context 上访问,但它好像完全忽略了 grails.app.context

之所以不起作用,是因为这些设置是针对 运行 本地的,而不是部署为 WAR 文件时。当您在 run-app 中使用 tomcat 或 jetty 插件时,我们将容器配置为使其看起来像 运行 和 "exploded" war(类似于 WAR 被各种服务器解压到文件系统)。由于容器 运行 处于嵌入式模式,因此很容易根据需要以编程方式配置它。

但是,当您部署 WAR 文件时,可配置性几乎没有。在 run-app 中,Grails 的构建逻辑启动服务器、配置它并部署应用程序,但是部署到 "real" 服务器的 WAR 文件由服务器管理,而不是其他方式左右。