Tomcat 7 + apache2 代理转发导致网站资源丢失

Tomcat 7 + apache2 代理转发导致网站资源丢失

我相信大多数人都见过这个问题。我使用 apache2 的 mod_proxy_html 将 Web 请求转发到 tomcat。请求已转发到 tomcat,但 tomcat 服务器无法找到网站资源(图像、样式、字体等)。问题是,当使用输入 subdomain.example.com 时,Tomcat 认为资源路径应该位于: http://subdomain.example.com/xyz/images/images1.jpg

这导致了问题,因为实际上,因为 http 请求变成: http://www.example.com:8080/xyz/xyz/images/images1.jpg,上下文名称“xyz”出现两次。因此 tomcat 无法找到图像文件。该文件实际上位于 www.example.com:8080/xyz/images/images1.jpg

我相信这种设置非常标准,但我不知道大多数人是如何解决这个路径问题的?

这是我的设置: 1. 在我的 apache2 virtualHost 配置文件中,我有以下设置:

<VirtualHost *:80>
ServerName subdomain.example.com

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

  ProxyRequests Off
  ProxyPreserveHost On
  <Proxy *>
       Order deny,allow
       Allow from all
  </Proxy>
  ProxyPass / http://www.example.com:8080/xyz/
  ProxyPassReverse / http://www.example.com:8080/xyz/
</VirtualHost>
  1. 在 Tomcat 中,我的网站安装在 */tomcat7/webapps/xyz

  2. 我使用 ${pageContext.request.contextPath} 来定义 jsp 页面中所有资源的基本路径。

答案1

添加

ProxyPass /xyz/ http://www.example.com:8080/xyz/

在第一行 ProxyPass 上面你就应该没问题了。

相关内容