【发布时间】:2015-11-13 14:55:55
【问题描述】:
我们有一个 AWS EC2 负载均衡器,它上面安装了 SSL 证书。但是池中的服务器仍然在端口 80 和非 SSL 协议上运行。
问题是我无法访问负载平衡器,但我仍然必须将非 SSL 流量路由到安全 HTTPS。我尝试在htaccess 中添加以下内容,但它不起作用并且可以理解,因为服务器仍在 HTTP 上运行。
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
我在 PHP 代码中尝试过同样的事情,但也没有用。
if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") {
$url = "https://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
redirect($url);
exit;
}
所以,我知道服务器仍在 HTTP 上运行,并且证书仅应用于负载平衡器。在这种情况下强制这种重定向的最佳解决方案是什么。我能想到的一种解决方案是在代码中解析 URL 以查看其中是否有 http:// 并重定向。这可能有效,但我并不认为它是一个干净的最终解决方案。 AWS EC2 有没有办法以这种方式重定向?我对 AWS EC2 不熟悉。
另外,是否有任何服务器参数可能表明服务器在端口 80 上运行但 HTTPS 仍然是on?
【问题讨论】:
-
@Shri.harry 我还有其他方法可以通过服务器端代码吗?
-
@Shri.harry HTTPS 已启用。我只需要强制重定向 http -> https。
标签: php .htaccess ssl amazon-web-services amazon-ec2