1

我已经设置了一个带有 apache 的主机来提供静态页面并使用 Tomcat 来提供我的 Web 应用程序(参见这个问题)。静态页面来自服务器

http://myhost.com

并且动态(tomcat)页面来自服务器

http://myhost.com/myapp

mod_proxy 确保“ http://myhost.com/myapp ”被转发到运行在“ http://myhost.com:8080 ”上的tomcat 服务器。

问题是现在您在“ http://myhost.com/myapp ”上获得了标准的 Tomcat 介绍页面,但是如果您单击左侧的本地链接(例如“状态”),它会生成一个 URL“ http:/ /myhost.com/manager/status ”虽然它应该生成:“ http://myhost.com/myapp / manager /status”

(tomcat下安装的webapp也是如此)

应该在我的配置(apache、tomcat?)中进行哪些更改以将我的 tomcat 链接重定向到正确的位置?

4

3 回答 3

0

您的 URL 映射自:

http://myhost.com/myapp -> http://myhost.com:8080

这意味着访问上面的 URL 将被映射到 Tomcat 中的 ROOT 应用程序。ROOT 应用程序将生成包含来自 Tomcat 根上下文的链接的页面。

换句话说,如果你去:

http://myhost.com:8080

您将获得一个包含指向的链接的页面

http://myhost.com:8080/manager/status

该链接将起作用。但是,当该页面返回给通过 Apache 请求它的浏览器时,完整的 URL 看起来像: http: //myhost.com/manager/status

我假设您打算将一个名为“myapp”的应用程序部署到 Tomcat?如果是这种情况,此应用程序的 Tomcat URL 将是

http://myhost.com:8080/myapp

当通过 Apache 访问时,它也可以正确映射。

如果您绝对必须以这种方式访问​​ Tomcat 根应用程序,则必须重写它在返回的页面中输出的 URL。

于 2010-01-20T09:13:20.513 回答
0

您是否ProxyPassReverse在 httpd.conf 中设置了设置。这将覆盖 HTTP 标头,您将在 tomcat 一侧获得正确的请求。

于 2010-01-20T09:36:20.620 回答
0

我在mod_proxy_ajp. 它需要 mod_proxy,但可以通过 ajp 工作。改用它,你的 conf 文件看起来很相似

    ProxyPass / ajp://localhost:8009/

请参阅我的类似问题以及此问题的答案。我发现 mod_proxy_ajp 中的唯一错误是,如果我需要重新启动 tomcat,我也必须强制重新启动 apache。

于 2010-01-20T14:26:46.127 回答