代码之家  ›  专栏  ›  技术社区  ›  Roalt

Tomcat为mod_proxy和apache提供的URL错误

  •  1
  • Roalt  · 技术社区  · 16 年前

    我已经用Apache设置了一个主机来服务静态页面,并使用Tomcat来服务我的Web应用程序(请参见 this question )静态页来自服务器

    http://myhost.com

    动态(Tomcat)页面来自

    http://myhost.com/myapp

    mod_代理确保 http://myhost.com/myapp “转发到运行在上的Tomcat服务器” http://myhost.com:8080 “。

    问题是,现在您可以进入标准的Tomcat介绍页面了。” http://myhost.com/myapp “但是,如果单击左侧的本地链接(例如“状态”),它将生成一个URL 他说:“这是一个很好的选择。” http://myhost.com/manager/status 当它 应该 生成: http://myhost.com/ 迈阿普 /经理/状态”

    (安装在Tomcat下的webapps也是如此)

    在我的配置(apache、tomcat)中应该更改什么?把我的Tomcat链接重定向到正确的地方?

    3 回复  |  直到 11 年前
        1
  •  0
  •   DrDol    16 年前

    你设置了吗 ProxyPassReverse 在httpd.conf中进行设置。这将覆盖HTTP头,您将在Tomcat一侧得到正确的请求。

        2
  •  0
  •   Joe    16 年前

    您的URL映射自:

    http://myhost.com/myapp -gt; http://myhost.com:8080

    这意味着访问上述URL将映射到Tomcat中的根应用程序。根应用程序将生成包含来自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访问时,它也将正确映射。

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

        3
  •  0
  •   Community Mohan Dere    9 年前

    我最成功的是 mod_proxy_ajp . 它需要mod_代理,但可以在ajp上工作。使用它,您的conf文件看起来类似

        ProxyPass / ajp://localhost:8009/
    

    看到我 similar question 以及对 this question .我在mod_proxy_ajp中发现的唯一错误是,如果需要重新启动Tomcat,我也必须强制Apache重新启动。

    推荐文章