我在 Tomcat 安装前安装了 Apache 作为反向代理。大多数 URL 都通过JkMount
Apache 中的指令路由到 Tomcat。
对于一个 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?
答案1
我发现的解决方案是创建一个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