Apache 无法正确重写代理中的 URL

Apache 无法正确重写代理中的 URL

我正在尝试使用子目录 /lan/ 中的 apache 为我的路由器的 Web 界面创建反向代理

我的路由器的 IP 地址是 172.16.0.1,可以通过以下方式访问http://172.16.0.1/

我正在使用以下指令来尝试实现这一点:

    <Location /lan>
            ProxyPass http://172.16.0.1
            ProxyPassReverse http://172.16.0.1
    </Location>

问题是重写http://172.16.0.1/.js 或http://172.16.0.1/.css 到https://我的域名/.js 或https://my.dmain/.css 而不是https://my.domain/lan/.js 和https://my.domain/lan/.css

我能够使用以下指令使此精确设置与 pihole 配合使用:

    <Location /pi-hole>
            ProxyPass http://172.16.81.53/admin/
            ProxyPassReverse http://172.16.81.53/admin/
    </Location>

并正确地重写 /admin/ 下的所有内容,而不是 root 下的所有内容

我尝试了几种方法,但都没有奏效,我真的很感激任何帮助

答案1

.css和文件的 URL.js由路由器本身生成,它们位于路由器发送给客户端的 HTML 代码内。

Apache 不会用 修改 HTML 响应主体ProxyPassReverse,它只会修改响应标头。

您需要使用 Apachemod_substitute来替换响应主体。您可以在以下位置找到更多信息:https://httpd.apache.org/docs/current/mod/mod_substitute.html

指定规则时需要小心mod_substitute,因为以不正确的方式更改 HTML 主体可能会导致整个管理界面无法正常工作。

更好的方法是使用子域名作为反向代理。

相关内容