我有以下 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>