Apache2 ProxyPassReverse 无法正确重写 URL

Apache2 ProxyPassReverse 无法正确重写 URL

我有以下 apache 虚拟主机配置。ProxyPassReverse 似乎无法正确转换 URL。

URLhttp://www.example.com/9999pcap/显示远程设备上的目录列表,目录列表看起来不错,但如果你点击一个文件captype1.pcap1.gz进行下载,你就会得到

此服务器上未找到请求的 URL /captype1.pcap1.gz

并且 URL 栏显示/captype1.pcap1.gz。如果您手动将 URL 更改为 ,则可以/9999pcap/captype1.pcap1.gz正确下载文件。

[Sat Dec 06 19:19:33.265254 2014] [core:info] [pid 22470:tid 139711796442880] [client 127.0.0.1:56469] AH00128: File does not exist: /var/www/html/captype1.pcap1.gz, referer: http://www.example.com/9999pcap/

URL/9999/显示远程设备的登录页面,但看起来不对,因为它没有正确下载样式表和其他文件,尝试登录失败

该服务器上未找到所请求的 URL /cgi-bin/luci/。

谁能告诉我我做错了什么?谢谢!

<VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        DirectoryIndex index.html

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

        ProxyRequests Off
        ProxyPreserveHost Off

        <Proxy *>
                Order Allow,Deny
                Allow from all
        </Proxy>

        <Location /9999/>
                ProxyPass http://localhost:22002/cgi-bin/luci/
                ProxyPassReverse http://localhost:22002/cgi-bin/luci/
        </Location>
        <Location /9999pcap/>
                ProxyPass http://localhost:22003/
                ProxyPassReverse http://localhost:22003/
        </Location>
</VirtualHost>

答案1

apache proxypassreverse ServerName 不起作用

我放弃了这个方法,因为它没有发挥应有的作用。只需手动替换 URL 片段就可以了,如本文所示。

<Location /9999pcap/>
        ProxyPass http://localhost:22003/
        ProxyPassReverse http://localhost:22003/
        Substitute s>href='/>href='/9999pcap/>
        SetOutputFilter INFLATE;SUBSTITUTE;DEFLATE
        RequestHeader unset Accept-Encoding
</Location>

相关内容