gpt4 book ai didi

Apache proxypass 不解析图像和 css 等资源的 url

转载 作者:行者123 更新时间:2023-11-28 21:51:43 24 4
gpt4 key购买 nike

我需要将路径映射到我的 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网址映射为 http://localhost/ui/css/style.css .

我尝试使用 rewrite,但没有用。

RewriteEngine on
RewriteRule ^/ui/ /app/

我需要找到更正 URL 的正确方法。任何帮助将不胜感激!提前致谢。

最佳答案

经过反复试验,我找到了两种不同的解决方案。

  1. 使用 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>
  2. 在 webapp 文件夹中创建已部署应用程序的链接/快捷方式,并将快捷方式命名为 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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40340024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com