我有一个负载均衡的开发站点,我正在解决SSL上的错误,我遇到了最后一个非常烦人的问题。在某些页面上我需要强制它到SSL这么容易,我只是想创建一个
header ("Location: https://www.example.com/mypage.php");
我认为这很容易而且不用担心。但是,每次我这样做,它都会将其转换回http。好吧,你可以认为它创造了一个无法解决的无限循环。我无法弄清楚如何将https保留在那里,以便它将拉动页面的安全版本。如果我使用https直接导航到安全页面,它可以正常工作。唯一的问题是这个重定向。
任何帮助都会很棒!我正在使用POUND作为负载平衡代理。 Web服务器节点上的Apache。 SSL证书在Load Balancer中设置。
答案 0 :(得分:2)
当进行负载均衡时,“内部”SSL通常会出现:客户端通过负载平衡器进行连接,您可以使用它进行SSL加密,但在我看到的大多数负载均衡器背后都是简单的“HTTP”。尝试让负载均衡器为您设置一个自定义标头,指示 在loadbalancer&之间的HTTPS连接。客户端。
来自http://www.apsis.ch/pound/index_html
什么是: ... SSL包装器:Pound将解密来自客户端浏览器的HTTPS请求,并将它们作为普通HTTP传递给后端服务器。
从更多手册页:
HTTP侦听器 RewriteLocation 0 | 1 | 2
如果1强制磅改变位置:和内容位置: 回复中的标题。如果他们指向后端本身或 监听器(但使用错误的协议)响应将是 已更改为在请求中显示虚拟主机。默认值:1 (活性)。如果该值设置为2,则只有后端地址 相比较;这对于将请求重定向到HTTPS非常有用 侦听器与HTTP侦听器在同一服务器上。
答案 1 :(得分:0)
重定向到https页面没问题。 您可以检查端口,方案或服务器变量(可能是服务器变量是最好的)来查看https是否已打开,并将其作为重定向的条件
$_SERVER['SERVER_PORT'] == 443
parse_url($_SERVER['REQUEST_URI'],PHP_URL_SCHEME) == 'https'
$_SERVER['HTTPS'] == 'on'
但是当你有一个无限循环时,一定有其他错误!
答案 2 :(得分:0)
尝试使用load blancer“balance”代替。它只需要大约5分钟的设置,而不是代理,将进行“真正的”负载平衡。我猜你的代理目前正在将https请求重定向到http地址。尝试在不使用平衡器的情况下提出请求。您可以通过在/ etc / hosts文件中设置主机名直接指向服务器而不是负载均衡器的IP来实现此目的