Apache-2.2
proxy_ajp 萬用字元
我需要設置 apache,以便任何 site.com/ ANYTHING /servlet/ ANYTHING通過 ajp 進入 tomcat,但正常文件仍將通過 apache。
我一直在搞砸這個無濟於事
<LocationMatch "./*/servlet/*"> Order Allow,Deny Allow from all ProxyPass ajp://localhost:8009/ ProxyPassReverse / </LocationMatch>
這可以將所有內容都指向我們的 tomcat 實例。
ProxyPass / ajp://localhost:8009/
編輯:我可以驗證正則表達式是否正確,但它仍然沒有將其發送到代理 ajp。我也剛剛重新驗證了 ProxyPass / ajp://localhost:8009/ 仍然有效,所以我知道 ajp 很好,我知道正則表達式很好,但為什麼它仍然不起作用:\
RewriteRule ^(.*)/servlet/(.*)$ ajp://localhost:8009/$1 [P]
我傾向於使用
mod_rewrite
這樣的東西,它允許您將正則表達式應用於傳入的 URI。例如:RewriteRule ^/((kaptcha|barcode)/view/(.*))$ ajp://0.0.0.0:9019/media-webapp/$1 [P]
這代理
/kaptcha/view/nnnn
到ajp://0.0.0.0:9019/media-webapp/kaptcha/view/nnnn
. 最後[P]
是一個標誌,指示請求將被代理,而不是重定向。
為了簡單起見,使用
mod_jk
. 它允許你“掛載”特定的目錄,這樣你就會有這樣的東西:LoadModule jk_module modules/mod_jk.so <IfModule mod_jk.c> JKMount /some_context/* ajp13 JKMount /another_context/* ajp13 </IfModule> Alias /images /some/directory/served_by_apache
等等。
這不僅會簡化您的配置,還會為您提供所需的確切功能。