我有一个弹性负载平衡器,打开两个端口,80和443. 443上有SSL。 80和443都被redirect到内部服务器端口80。
问题是,我想运行我的网站只有端口443(启用SSL),而不是明文。 现在我不知道如何安排在服务器上的ELB和端口,以便当端口80请求时,它总是redirect到端口443。
在上面的情况下,有一个redirect看,因为我已经把REWIRTE规则redirect在443从Apache Apache 80。
任何解决scheme?
有两种方法可以解决这个问题。
1)让apache在端口80和端口443上运行,ELB分别redirect到这些端口。
2)在应用程序级别处理。 在呈现任何页面之前,使您的应用程序强制https://。
来自亚马逊的论坛 。
让我先说明你正在试图解决的问题,看看我是否正确:你希望所有的用户stream量通过ELB,并stream向EC2实例,通过HTTPS。
如果是这样的话,简短的答案是肯定的,但是需要在AMI和ELB上做一些工作。
SSL证书上传到实例。 SSL连接。 作为第一步,使用以下命令安装mod_ssl : yum安装mod_ssl
port 443上向Apache添加HTTPS侦听器。 IAM 。 有关更多信息,请参阅此 。 ELB命令行将侦听器添加到ELB 。 port 443上的stream量的ELB ,并使用您上传到IAM的证书将stream量路由到实例上的port 443 。 (可选)您可以使用证书身份validation来validationELB和EC2实例之间的通信。 您需要在EC2实例的密钥库中使用的证书的公钥。
注意:以上步骤允许您终止EC2实例的SSL连接。 由于Elastic Beanstalk使用该端口与主机pipe理器进行通信,因此无法完全closures实例上的port 80 。 如果您愿意,可以closuresELB上的port 80 。
来源: 这里