2017-03-03 217 views
0

我使用jkmount通過安裝路徑到tomcat

JKMount  /rest/* ajp13_worker 
JKMount  /rest  ajp13_worker 

服務在domain.com PHP和我在domain.com/rest/的servlet。
但是,當我去domain.com/rest/,它的行爲就像我進入了domain.com/rest/rest,所以tomcat認爲我確實去/休息在tomcat上,但我想要tomcat認爲我在根目錄。所以我得到一個404錯誤,因爲/休息/有意不存在。 404 Error

我怎樣才能讓tomcat認爲我在根?
謝謝,
尼克拉斯B.

回答

0

沒有,AJP的配置是這樣做是爲了做確切的事情。

當您將請求與JkMount映射時,AJP過濾器會保留整個請求路徑。所以當你輸入yourdomain.com/restyourdomain.com/rest/your_resource時,ajp會通過/rest/rest/your_resource給Tomcat。

這樣,就像在Apache和AJP映射中一樣,使用Tomcat的應用程序上下文路徑更容易。在這種情況下,在名爲'/ rest'的上下文中使Tomcat應用程序更容易。

但是,如果您有任何其他情況,還有其他方法,例如,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/ 
+0

當我使用的ProxyPass與AJP它會導致同樣的問題,以http一切正常。使用http有什麼缺點? –

+0

對我來說聽起來很奇怪,ProxyPass ajp導致同樣的問題,我已經多次使用這種方式......但無論如何,我認爲使用http over ajp沒有任何缺點,我看到更多的自我偏好。 – jlumietu