解决Apache反向代理中,跳转网址与客户端输入网址不一致的问题
声明:本文全部内容为原创内容,禁止在未经授权的情况下进行任何二次创作和修改,转载请注明出处。
提示:文章内容可能会发生改变,如文中出现与实际不符的情况,请点击最后的阅读原文查看个人博客主站的最新版本。
摘要
问题
示例配置:
_default_:443>
Servername blog.davcloud.top
SSLEngine on
SSLCertificateFile ssl_certificate_file
SSLCertificateKeyFile ssl_certificate_key_file
RewriteEngine On
ProxyPass / http://192.168.1.101:3333/
ProxyPassReverse / http://192.168.1.101:3333/
</VirtualHost>
在这个例子中,部署在公网上的代理服务器的网址为 https://blog.davcloud.top/, 转发到的内网服务器上的网址为http://192.168.1.101:3333。
当客户端输入的网址为 https://blog.davcloud.top/test.html时,实际访问的网址是https://192.168.1.101:3333/test.html,该网址对于客户端而言并不存在。
解决方案
在配置中添加一句 “ProxyPreserveHost On” 命令。
配置:
_default_:443>
Servername blog.davcloud.top
SSLEngine on
SSLCertificateFile ssl_certificate_file
SSLCertificateKeyFile ssl_certificate_key_file
RewriteEngine On
ProxyPass / http://192.168.1.101:3333/
ProxyPassReverse / http://192.168.1.101:3333/
ProxyPreserveHost On
</VirtualHost>
当客户端输入的网址为https://blog.davcloud.top/test.html时,实际访问的网址是https://blog.davcloud.top/test.html,此时该网址对于客户端而言是正确的。
--------------------------------------------
个人博客主站(中英最新内容):https://blog.davcloud.top/
CSDN:不向光的红外线
知乎:不向光的红外线