Apache-2.2

proxy_ajp 萬用字元

  • January 13, 2011

我需要設置 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/nnnnajp://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

等等。

這不僅會簡化您的配置,還會為您提供所需的確切功能。

引用自:https://serverfault.com/questions/222177