gpt4 book ai didi

Grails 应用程序的 apache ajp 配置

转载 作者:行者123 更新时间:2023-11-28 22:38:31 24 4
gpt4 key购买 nike

我有多个 grails 应用程序在 tomcat 服务器上运行,使用 ajp 协议(protocol)。在同一台服务器上,我将 apache 作为那些 tomcat 应用程序的前端运行。像这样的 apache 配置:

ProxyPass /example1/ ajp://localhost:8082/example1/
ProxyPassReverse /example1/ ajp://localhost:8082/example1/
ProxyPass /example2/ ajp://localhost:8082/example1/
ProxyPassReverse /example2/ ajp://localhost:8082/example2/

我希望 example1 作为根上下文运行

ProxyPass / ajp://localhost:8082/example1/

这是行不通的。所有静态内容都已损坏。网页文本呈现,图像将指向:/example1/images/myimage.jpg如果您转到:/images/myimage.jpg

,图像将得到解析

我尝试了很多方法来避免将 example1 部署为 ROOT.war。但这似乎是解决此问题的唯一方法。这不足以满足我的需要。

在 grails 方面,我已经从服务器 url 中删除了 ${appName},看起来像:grails.serverURL = "http://apacheajp.example.com/"

我已经将 grails.app.context=/添加到 application.properties,这也不起作用。

这里的最终目标是使用此 apache 为多个子域提供服务器。我希望 example1.example.com(apacheajp.example.com 的别名)解析为 example1 应用程序。同样,我希望 example2.example.com 对 example2 应用程序采取相同的方式。这解释了为什么不希望以 ROOT 身​​份进行部署。

我使用的服务器是RHEL6

这篇文章最好地描述了我遇到的相同问题: http://grails.1312388.n4.nabble.com/Grails-context-big-problem-with-apache-mod-proxy-td1392448.html

最佳答案

如果您更改 ProxyPass 中的路径,那么您还需要考虑许多其他问题。这些都非常棘手/昂贵,因此通常更容易将应用程序部署为 ROOT.war

鉴于您不能/不会这样做,您需要考虑以下事项:

  • 添加 ProxyPassReverse 指令以修复一些 HTTP 响应 header
  • 添加 ProxyPassReverseCookiePath 指令以修复任何 cookie
  • 使用 mod_headers 修改包含不正确路径引用的任何其他 header
  • 使用 mod_substitute 更正任何响应主体中的上下文路径

这通常就足够了,但可能需要一些时间来追踪您需要更改的所有内容。我真的会鼓励您将 WAR 重命名为 ROOT.war。是什么阻止了你?

关于Grails 应用程序的 apache ajp 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10400893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com