我正在使用
JKMount /rest/* ajp13_worker
JKMount /rest ajp13_worker
在 domain.com 上提供 php,在 domain.com/rest/上提供我的 servlet。
但是,当我转到 domain.com/rest/时,它就像我进入了 domain.com/rest/rest,所以 tomcat 认为我确实去了/rest on tomcat,但我希望 tomcat 认为我在根目录中目录。所以我收到 404 错误,因为/rest/obiously 不存在。
如何让 tomcat 认为我处于 root 状态?
谢谢,
尼克拉斯 B.
最佳答案
不,ajp 配置正在做它应该做的事情。
当您使用 JkMount
映射请求时,AJP 过滤器会保留整个请求路径。因此,当您键入 yourdomain.com/rest
或 yourdomain.com/rest/your_resource
时,ajp 将传递 /rest
或 /rest/your_resource
到 Tomcat。
这样,就像在 Apache 和 AJP 映射中一样,更容易使用 Tomcat 的应用程序上下文路径。在这种情况下,将 Tomcat 应用程序置于名为“/rest”的上下文中应该更容易。
但是当您遇到任何其他情况时,还有其他方法,例如 mod_proxy
或 mod_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/
关于apache - jkmount 将挂载路径传递给 tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42581445/