Назад | Перейти на главную страницу

Apache mod_jk заменяет правила mod_rewrite

У нас есть немного сложная установка Apache 2.2 перед экземпляром Tomcat 6.0. Основное веб-приложение Tomcat развернуто в:

/opt/tomcat/webapps/ROOT

Но у нас также есть статический контент, который мы обновляем нерегулярно. Мы не хотели форсировать новую сборку и развертывание веб-приложения, поэтому оно хранится отдельно в таких папках, как:

/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 или в одной из статических папок.

Почему вы думаете об использовании mod_jk?

Если нужно использовать связь ajp, чтобы ускорить передачу на tomcat, почему бы не посмотреть на mod_proxy_ajp?

Вы просто измените правило перезаписи tomcat на: -

RewriteRule ^/(.*)$ ajp://localhost:8080/$1 [P,L]