有没有办法在Apache上查找文件,如果没有找到,请查看Tomcat?

时间:2015-07-29 14:08:31

标签: apache tomcat

我有一个包含非常大的媒体文件的Web应用程序项目,我希望它们与应用程序的其余部分分开但仍保持相同的路径。

例如,如果我在apache文档根目录中有一个文件:

/var/www/html/myapp1/media/bigFile.wmv

但我的应用程序的其余部分位于tomcat app目录中:

/usr/share/tomcat/webapps/myapp1/

有没有办法看看Apache是​​否有该文件,然后如果不查看Tomcat,然后如果没有找到任何内容,那么给出404?

我刚刚尝试过这样做并得到一个tomcat 404.这是因为我的tomcat在Apache后面运行,所有请求都直接发送到tomcat。

有没有办法查看Apache是​​否有该文件,如果没有找到,请查看Tomcat然后,如果再找不到任何内容,然后给404?

如果我可以从 tomcat到apache到404 ,那也是优先的,我可以将整个应用程序+媒体文件放到apache中,然后删除新版本的tomcat中的应用程序。我不必在两个目录之间做差异。

这是我用来重定向到tomcat的当前配置文件:

<VirtualHost *:80>
   ServerName localhost
   ServerAlias website.com

   ProxyRequests Off
   ProxyPreserveHost On

   ErrorLog /var/log/httpd/tomcat.error.log
   CustomLog /var/log/httpd/tomcat.log combined

   <Proxy *>
           Order deny,allow
           Allow from all
   </Proxy>

   ProxyPass / http://localhost:8080/
   ProxyPassReverse / http://localhost:8080/
</VirtualHost>

1 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是httpd决定它无法满足请求,然后代理Tomcat作为后备。如果Tomcat什么都没找到,那么 Tomcat 将发出404,而不是httpd以某种方式检测到并重新获得控制权。

像大多数疯狂的事情一样,你应该能够用mod_rewrite

来做到这一点
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule /path/to/apply - [H=jakarta-servlet]

完全未经测试,但可能正常工作(就像大多数mod_rewrite食谱一样)!

相关问题