我有一台Apache服务器代理从mainhost.com/subdirectory
到someec2instance/subdirectory
的所有流量。当我启动Apache并点击someec2instance.com
时,我会看到ROOT war页面。这很好。如果我将我的应用程序部署为ROOT.war,那么一切正常someec2instance.com
。
但是,当我访问mainhost.com/subdirectory
时,所有资产网址和link_to
网址都是错误的,并指向mainhost.com
而不是mainhost.com/subdirectory
。
我已设置grails.app.context
并通过application.properties
确认正在设置正确的grails.env
。
部署为grails.app.context
时,为什么不尊重ROOT.war
?我希望该网站可以someec2instance.com/context
访问,但它完全忽略grails.app.context
。
答案 0 :(得分:4)
原因是不起作用的是这些设置用于本地运行,而不是在部署为WAR文件时。当您在run-app
中使用tomcat或jetty插件时,我们将容器配置为使其看起来像是在运行"爆炸" war(类似于各种服务器将WAR解压缩到文件系统时)。由于容器以嵌入模式运行,因此可以根据需要以编程方式轻松配置它。
但是当你部署一个WAR文件时,那里的可配置性差不多。在run-app
中,Grails的构建逻辑启动服务器,配置它并部署应用程序,但是一个WAR文件部署到"真正的"服务器由服务器管理,而不是相反。