我已经设置了一个带有apache的主机来提供静态页面并使用Tomcat来提供我的Web应用程序(参见this question)。静态页面是来自
的服务器并且动态(tomcat)页面是来自
的服务器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下安装的webapps也是如此)
我的配置(apache,tomcat?)应该更改什么才能将我的tomcat链接重定向到正确的位置?
答案 0 :(得分:0)
您的网址来自:
http://myhost.com/myapp - > http://myhost.com:8080
这意味着访问上述URL将映射到Tomcat中的ROOT应用程序。 ROOT应用程序将生成包含来自Tomcat根上下文的链接的页面。
换句话说,如果你去:
您将获得一个包含
链接的页面http://myhost.com:8080/manager/status
此链接可以使用。但是,当该页面返回给通过Apache请求它的浏览器时,完整的URL如下所示:http://myhost.com/manager/status
我假设你打算将一个名为'myapp'的应用程序部署到Tomcat?如果是这种情况,此应用程序的Tomcat URL将是
通过Apache访问时,也可以正确映射。
如果你绝对必须以这种方式访问Tomcats root应用程序,你必须在它返回的页面中重写它输出的URL。
答案 1 :(得分:0)
您是否在httpd.conf中设置了ProxyPassReverse
设置。这将覆盖HTTP标头,您将获得tomcat一侧的正确请求。
答案 2 :(得分:0)
我在mod_proxy_ajp
取得了最大的成功。它需要mod_proxy,但适用于ajp。使用它,你的conf文件看起来类似
ProxyPass / ajp://localhost:8009/
查看我的similar question以及this question的答案。我发现mod_proxy_ajp中唯一的错误是如果我需要重启tomcat,我也必须强制重启apache。