У меня есть Apache перед моей установкой Tomcat в качестве обратного прокси. Большинство URL-адресов направляются в Tomcat с помощью JkMount
директива в Apache.
Для одного шаблона URL-адреса я бы хотел, чтобы Apache перенаправлял запросы работнику Tomcat только в том случае, если статический ресурс не найден в файловой системе.
Примерно так:
RewriteCond /var/www%{REQUEST_FILENAME} !-f
RewriteCond /var/www%{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} ^/assets/.*$
RewriteRule ^/(.*)$ http://${tomcat-ssl}/$1 [P] # This syntax is wrong
Какой синтаксис я могу предоставить для RewriteRule
направить запрос на Tomcat?
Решение, которое я нашел, заключалось в создании Alias
, который Apache рассматривает как синоним пути предоставления. Я создал RewriteRule
который перезаписывает URL на этот Alias
если файл существует. Поскольку Alias
не соответствует JkMount
, то JkMount
не справляется. Если файл не существуют, RewriteCond
терпит неудачу, RewriteRule
не применяется, и запрос передается Tomcat.
Alias /localstaticassets /var/www/assets
RewriteCond /var/www/%{REQUEST_FILENAME} -f
RewriteRule ^/assets/(.*)$ /localstaticassets/$1 [QSA,PT]
JkMount /assets/* tomcat-ssl