我相信大多数人都见过这个问题。我使用 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>
在 Tomcat 中,我的网站安装在 */tomcat7/webapps/xyz
我使用 ${pageContext.request.contextPath} 来定义 jsp 页面中所有资源的基本路径。
答案1
添加
ProxyPass /xyz/ http://www.example.com:8080/xyz/
在第一行 ProxyPass 上面你就应该没问题了。