我目前使用 SSL 创建了一个 Apache 反向代理。在测试期间,我执行了以下操作:
Key in https://10.0.100.100 > browser asks for credentials > I enter credentials > browser goes to http://10.0.100.100 > browser asks for credentials again > I enter credentials again > browser finally shows website, but as http
。
在我创建 apache 的 CentOS 中,我在目录“/etc/httpd/conf.d/default.conf”下创建了一个名为 default.conf 的文件,其内容如下:
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPreserveHost On
ProxyReceiveBufferSize 4096
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://intraspace/
ProxyPassReverse / http://intraspace/
#RewriteEngine On
#RewriteCond %{SERVER_PORT} !443
#RewriteRule ^(.*)$ https://intraspace/$1 [R,L]
<Location />
Order allow,deny
Allow from all
</Location>
内部空间指的是我的后端服务器(被我的反向代理隐藏的服务器)。我注释了重写规则,因为如果我意识到如果我使用它们,它将显示重定向并显示我的 apache 的本地 ip 地址(当我输入我的 apache 的公共 ip 时)或者当我尝试任何其他 IP 地址(后端服务器 IP 或 apache 的公共 IP)时导致“内部错误”
我该如何解决这个双重认证/重定向的问题,并使我的网站 IP 保持在 https 版本?
答案1
可能是 inraspace 看到的是 http,所以返回的都是 http。如果应用程序处理它,你可以设置
RequestHeader set X-Forwarded-Proto "https"
如果应用程序支持该标头,则在 proxypass 行上方,这将告诉后端 SSL 已终止