Apache-2.2

Apache mod_jk 替換 mod_rewrite 規則

  • March 3, 2011

我們在 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 並且我有兩個問題:

  1. 甚至值得使用 mod_jk 嗎?我不需要負載平衡。
  2. 是否有可能處理我概述的靜態內容被引用為“ 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]

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