Amazon VPC ELB SSL端口redirect

我有一个弹性负载平衡器,打开两个端口,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。

如果是这样的话,简短的答案是肯定的,但是需要在AMIELB上做一些工作。

  1. 请按照如何创build自定义AMI的文档中突出显示的步骤操作 。
  2. 将您的SSL证书上传到实例。
  3. 创build一个密钥库文件来存储私钥和证书。
  4. 所有对Tomcat的请求都通过Apache进行代理。 所以我会假设你会终止Apache的SSL连接。 作为第一步,使用以下命令安装mod_ssl

yum安装mod_ssl

  1. port 443上向Apache添加HTTPS侦听器。
  2. 将您的Web应用程序的证书上传到IAM 。 有关更多信息,请参阅此 。
  3. 使用ELB命令行将侦听器添加到ELB
  4. 将侦听器添加到侦听port 443上的stream量的ELB ,并使用您上传到IAM的证书将stream量路由到实例上的port 443

(可选)您可以使用证书身份validation来validationELB和EC2实例之间的通信。 您需要在EC2实例的密钥库中使用的证书的公钥。

注意:以上步骤允许您终止EC2实例的SSL连接。 由于Elastic Beanstalk使用该端口与主机pipe理器进行通信,因此无法完全closures实例上的port 80 。 如果您愿意,可以closuresELB上的port 80

来源: 这里