apache - 有没有办法在 Apache 上查找文件,如果找不到,再在 Tomcat 中查找?

标签 apache tomcat

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

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

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

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

/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>

最佳答案

最好的方法是使用 httpd 确定它不能满足请求,然后代理到 Tomcat 作为后备。如果 Tomcat 什么也没发现,Tomcat 将发出 404,而不是 httpd 以某种方式检测到并重新取得控制权。

像大多数疯狂的事情一样,您应该能够使用 mod_rewrite 来做到这一点:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule /path/to/apply - [H=jakarta-servlet]

完全未经测试,但可能会起作用(就像大多数 mod_rewrite 方法一样)!

关于apache - 有没有办法在 Apache 上查找文件,如果找不到,再在 Tomcat 中查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31702917/

相关文章:

java - 在端口 80 上设置 tomcat 后,PhpMyAdmin 无法访问

django - 在 mod_wsgi 上调试 Django 代码(如何访问 ['wsgi.errors' ])

php - 更改 Apache 配置目录?

eclipse - Apache Tomcat 配置文件的 Context 元素的 "source"属性有什么用?

java - 在一台机器上有两个 webapps 每个都在不同的 servlet 容器上比两个都在同一个容器上是不是很糟糕?

java - 我的 WAR 文件不包含最新的更改

php - 用 mod_rewrite 或像 PHP 这样的语言处理友好/干净/漂亮的 URL 更好吗?

php - Apache - htdocs 和/var/www/html

apache - .htaccess 从子目录重写到根目录

jsp - Vaadin Web 应用程序(使用 tomcat)从数据库查询时获取 NullpointerException