配置 Elastic Beanstalk 环境的负载均衡器以终止 HTTPS - AWS Elastic Beanstalk
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

配置 Elastic Beanstalk 环境的负载均衡器以终止 HTTPS

要更新 AWS Elastic Beanstalk 环境以使用 HTTPS,您需要为环境中的负载均衡器配置 HTTPS 侦听器。两种类型的负载均衡器支持 HTTPS 侦听器:Classic Load Balancer 和 Application Load Balancer。

您可以使用 Elastic Beanstalk 控制台或配置文件配置安全侦听器和分配证书。

注意

单实例环境没有负载均衡器并且不支持负载均衡器上的 HTTPS 终止。

使用 Elastic Beanstalk 控制台配置安全侦听器

将证书分配至环境的负载均衡器

  1. 打开 Elastic Beanstalk 控制台,然后在 Regions (区域) 列表中选择您的 AWS 区域。

  2. 在导航窗格中,选择 Environments (环境),然后从列表中选择环境的名称。

    注意

    如果您有多个环境,请使用搜索栏筛选环境列表。

  3. 在导航窗格中,选择 Configuration (配置)

  4. Load balancer (负载均衡器) 配置类别中,选择 Edit (编辑)

    注意

    如果 Load balancer (负载均衡器) 配置类别没有 Edit (编辑) 按钮,则表示您的环境没有负载均衡器

  5. 修改负载均衡器页上,根据与您的环境关联的负载均衡器类型,该过程将会有所不同。

    • 传统负载均衡器

      1. 选择 Add listener (添加侦听器)

      2. Classic Load Balancer listener (Classic Load Balancer 侦听器) 对话框中,配置以下设置:

        • 对于侦听器端口,请键入传入流量端口,通常为 443

        • 对于侦听器协议,选择 HTTPS

        • 对于实例端口,请键入 80

        • 对于实例协议,选择 HTTP

        • 对于 SSL 证书,选择您的证书。

      3. 选择 Add

    • 应用程序负载均衡器

      1. 选择 Add listener (添加侦听器)

      2. Application Load Balancer listener (Application Load Balancer 侦听器) 对话框中,配置以下设置:

        • 对于端口,请键入传入流量端口,通常为 443

        • 对于协议,选择 HTTPS

        • 对于 SSL 证书,选择您的证书。

      3. 选择 Add

      注意

      对于 Classic Load Balancer 和 Application Load Balancer,如果下拉菜单中未显示任何证书,您应在 AWS Certificate Manager (ACM) 中为您的自定义域名创建或上传证书(首选)。或者,使用 AWS CLI 将证书上传到 IAM。

    • 网络负载均衡器

      1. 选择 Add listener (添加侦听器)

      2. Network Load Balancer listener (Network Load Balancer 侦听器) 对话框中,对于 Port (端口),请键入传入流量端口,通常为 443

      3. 选择 Add

  6. 选择 Apply

使用配置文件配置安全侦听器

您可以使用以下配置文件之一在负载均衡器上配置安全侦听器。

例 .ebextensions/securelistener-clb.config

当您的环境具有 Classic Load Balancer 时,请使用此示例。该示例使用 aws:elb:listener 命名空间中的选项通过指定的证书在端口 443 上配置 HTTPS 侦听器,并将解密的流量转发到端口 80 上的环境实例。

option_settings: aws:elb:listener:443: SSLCertificateId: arn:aws:acm:us-east-2:1234567890123:certificate/#################################### ListenerProtocol: HTTPS InstancePort: 80

将突出显示的文本替换为您的证书的 ARN。证书可以是您在 AWS Certificate Manager (ACM) 中创建或上传的证书(首选),也可以是通过 AWS CLI 上传到 IAM 的证书。

有关 Classic Load Balancer 配置选项的更多信息,请参阅Classic Load Balancer 配置命名空间

例 .ebextensions/securelistener-alb.config

当您的环境具有 Application Load Balancer 时,请使用此示例。该示例使用 aws:elbv2:listener 命名空间中的选项通过指定的证书在端口 443 上配置 HTTPS 侦听器。该侦听器将流量路由到默认进程。

option_settings: aws:elbv2:listener:443: ListenerEnabled: 'true' Protocol: HTTPS SSLCertificateArns: arn:aws:acm:us-east-2:1234567890123:certificate/####################################

例 .ebextensions/securelistener-nlb.config

当您的环境具有 Network Load Balancer 时,请使用此示例。该示例使用 aws:elbv2:listener 命名空间中的选项在端口 443 上配置侦听器。该侦听器将流量路由到默认进程。

option_settings: aws:elbv2:listener:443: ListenerEnabled: 'true'

配置安全组

如果将负载均衡器配置为将流量转发到除端口 80 外的实例端口,则必须向安全组添加一个规则来允许来自负载均衡器的入站流量通过该实例端口。如果您在自定义 VPC 中创建环境,则 Elastic Beanstalk 会为您添加此规则。

您可以在 .ebextensions 目录的配置文件中为您的应用程序添加 Resources 键,从而添加此规则。

以下示例配置文件添加传入规则到 AWSEBSecurityGroup 安全组。这样将允许端口 1000 上来自负载均衡器安全组的流量。

例 .ebextensions/sg-ingressfromlb.config

Resources: sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 1000 FromPort: 1000 SourceSecurityGroupName: {"Fn::GetAtt" : ["AWSEBLoadBalancer" , "SourceSecurityGroup.GroupName"]}