Apache-2.2
Apache mod_jk 替換 mod_rewrite 規則
我們在 Tomcat 6.0 實例前面有一個稍微複雜的 Apache 2.2 設置。主要的 Tomcat webapp 部署在:
/opt/tomcat/webapps/ROOT
但我們也有半定期更新的靜態內容。我們不想強制重新建構和部署 webapp,所以它單獨儲存在以下文件夾中:
/opt/tomcat/webapps/css /opt/tomcat/webapps/foo /opt/tomcat/webapps/bar
為了從 Apache 處理這個問題,我們使用 mod_rewrite 並且規則如下所示:
RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^/css/(.*)$ - [L] RewriteCond ROOT/%{REQUEST_FILENAME} -f RewriteRule ^/css/(.*)$ ROOT/$1 [L] RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.*)\.(jpg|png|html|js)$ - [L] RewriteCond ROOT/%{REQUEST_FILENAME} -f RewriteRule ^(.*)\.(jpg|png|html|js)$ - [L] RewriteRule ^/(.*)$ http://localhost:8080/$1 [P,L] ProxyPassReverse / http://localhost:8080/
我現在想我可能想開始使用 mod_jk 並且我有兩個問題:
- 甚至值得使用 mod_jk 嗎?我不需要負載平衡。
- 是否有可能處理我概述的靜態內容被引用為“ http://www.example.com/css/foo.css ”的情況,但我們不知道它是位於 Tomcat webapp 中還是位於靜態文件夾之一。
為什麼要考慮使用 mod_jk?
如果是使用ajp通信,為了加快傳輸到tomcat為什麼不看mod_proxy_ajp呢?
您只需將 tomcat rewriute 規則更改為:-
RewriteRule ^/(.*)$ ajp://localhost:8080/$1 [P,L]