vlambda博客
学习文章列表

解决Apache反向代理中,跳转网址与客户端输入网址不一致的问题

声明:本文全部内容为原创内容,禁止在未经授权的情况下进行任何二次创作和修改,转载请注明出处。

提示:文章内容可能会发生改变,如文中出现与实际不符的情况,请点击最后的阅读原文查看个人博客主站的最新版本。

摘要

问题

示例配置:

<VirtualHost _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” 命令。

配置:

<VirtualHost _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:不向光的红外线

知乎:不向光的红外线