Apache proxypass无法解析图像和CSS等资源的url
我需要将路径映射到我的tomcat Web应用程序。我为此使用了proxypass。这是apache2中的当前配置
<VirtualHost *:80> ServerName localhost:80
ProxyPass /app http://localhost:8088/ui/
ProxyPassReverse /app http://localhost:8088/ui/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
这是从tomcat获取HTML,但是形成的css
url错误。而不是http://localhost/app/css/style.css
url被映射为http://localhost/ui/css/style.css
。
我尝试使用重写,但是没有用。
RewriteEngine onRewriteRule ^/ui/ /app/
我需要找到正确的方法来更正URL。任何帮助将不胜感激!提前致谢。
回答:
经过大量的反复试验,我找到了解决问题的两种不同方法。
- 使用mod_rewrite和proxypass的一些更改:
<VirtualHost *:80> ProxyPreserveHost On
ProxyPass /app http://localhost:8080/ui/
ProxyPassReverse /app http://localhost:8080/ui/
#since in java web app the context started with /ui the js src had /ui in the beginning
#this resulted in 404 so I had to rewrite all request to /ui to forward to /app
RewriteEngine on
RewriteRule "^/ui(.+)" "/app$1" [R,L]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- 在webapp文件夹中创建到已部署应用程序的链接/快捷方式,并将shorcut命名为app在linux中,命令是(来自webapp文件夹中)
ln -s ui app
现在,apache配置为:
<VirtualHost *:80> ProxyPreserveHost On
<Location /app>
ProxyPass ajp://localhost:8019/app/
ProxyPassReverse ajp://localhost:8019/app/
SetOutputFilter proxy-html
ProxyHTMLExtended On
ProxyHTMLURLMap /app /app
RequestHeader unset Accept-Encoding
</Location>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
在第一种解决方案中,重写mod导致请求在重定向到正确的url之前返回304。这就是默认情况下的工作方式。
在第二种解决方案中,由于两个处理程序都是相同的(/ app),因此无需重新定向,并且URL正确映射。
以上是 Apache proxypass无法解析图像和CSS等资源的url 的全部内容, 来源链接: utcz.com/qa/420304.html