【问题标题】:jkmount passes mount path to tomcatjkmount 将挂载路径传递给 tomcat
【发布时间】:2017-03-03 14:28:41
【问题描述】:

我正在使用

JKMount        /rest/*    ajp13_worker
JKMount        /rest      ajp13_worker

在 domain.com 上提供 php,在 domain.com/rest/ 上提供我的 servlet。
但是,当我转到 domain.com/rest/ 时,它就像我进入了 domain.com/rest/rest,所以 tomcat 认为我确实在 tomcat 上去了 /rest,但我希望 tomcat 认为我在根目录中目录。所以我得到一个 404 错误,因为 /rest/ 显然不存在。

如何让 tomcat 认为我是根目录?
谢谢,
尼克拉斯 B.

【问题讨论】:

    标签: apache rest tomcat tomcat8 mod-jk


    【解决方案1】:

    不,ajp 配置正在做它应该做的事情。

    当您使用JkMount 映射请求时,AJP 过滤器会保留整个请求路径。因此,当您键入 yourdomain.com/restyourdomain.com/rest/your_resource 时,ajp 会将 /rest/rest/your_resource 传递给 Tomcat。

    这样,就可以更轻松地使用 Tomcat 的应用程序上下文路径,就像在 Apache 和 AJP 映射中一样。在这种情况下,将 Tomcat 应用程序放在名为“/rest”的上下文中应该更容易。

    但是当您有任何其他情况时,还有其他方法,例如mod_proxymod_proxy_ajp。它们都充当反向代理,将上下文路径/rest 映射到 tomcat,但使您能够在将请求重定向到 Tomcat 时更改请求的请求路径。 mod_proxy 和 mod_proxy_ajp 的区别在于第一个使用 Tomcat 的 http 端口,而第二个使用 ajp 端口。

    映射应该这样工作:

    ProxyPass /rest http://dns.ajp13_worker:8080/
    ProxyPass /rest ajp://dns.ajp13_worker:8009/
    

    【讨论】:

    • 当我将 ProxyPass 与 ajp 一起使用时,它会导致同样的问题,使用 http 一切正常。使用http有什么缺点吗?
    • 对我来说 ProxyPass ajp 导致同样的问题听起来很奇怪,我已经用这种方式多次使用过......但无论如何,我认为使用 http over ajp 没有任何缺点,我看到更多一种自我偏好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 2011-01-11
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多