AWS 负载均衡器将 www.example.com 重定向到 example.com 不起作用

时间:2021-01-20 16:28:32

标签: amazon-web-services amazon-ec2 amazon-elastic-beanstalk

目前有一个弹性 beanstalk 环境。

我已经转到了 EC2 下的负载均衡器设置,弹性 beanstalk 位于其中。

从那里我选择了唯一的负载均衡器 > 侦听器 > 查看/编辑 80 和 443 端口的规则。

我继续添加主机标头为 www.example.com 的规则

我还添加了一个 动作:重定向https 端口:443 自定义主机、路径、查询:主机是 example.com 选择的重定向是 301。

我继续为 80 位和 443 位听众“添加操作”。

问题是它不起作用,当我去http://www.example.comhttps://www.example.com时,它不去https://example.com

http://example.com 确实转到 https://example.com

2 个答案:

答案 0 :(得分:-1)

您可以将文件添加到您的存储库中,elasticbeanstalk 将查找这些文件以修改堆栈。

为此,首先将名为 .ebextensions 的文件夹添加到项目的根目录。

.ebextensions 文件夹中创建一个名为 http-to-https-redirection.config 的文件(或其他您会认识的文件)。然后在这个文件中粘贴以下内容(这是官方的AWS config

Resources:
  AWSEBV2LoadBalancerListener:
    Type: 'AWS::ElasticLoadBalancingV2::Listener'
    Properties:
      DefaultActions:
        - Type: redirect
          RedirectConfig:
            Protocol: HTTPS
            Port: '443'
            Host: '#{host}'
            Path: '/#{path}'
            Query: '#{query}'
            StatusCode: HTTP_301
      LoadBalancerArn:
        Ref: AWSEBV2LoadBalancer
      Port: 80
      Protocol: HTTP
  AWSEBV2LoadBalancerListenerHTTPS:
    Type: 'AWS::ElasticLoadBalancingV2::Listener'
    Properties:
      Certificates:
        - CertificateArn: Replace with Certificate ARN
      DefaultActions:
        - Type: forward
          TargetGroupArn:
            Ref: AWSEBV2LoadBalancerTargetGroup
      LoadBalancerArn:
        Ref: AWSEBV2LoadBalancer
      Port: 443
      Protocol: HTTPS

您只需要填写适合您正在执行的操作的重定向详细信息。

AWS 在 github 上提供了更多示例配置文件; https://github.com/awsdocs/elastic-beanstalk-samples

答案 1 :(得分:-1)

official document 说你做对了。所以这不是 ALB 的问题。

我认为您的 EB 配置有问题(或者可能是 @MarkB 在评论中所说的 DNS)。

目前,我只能说,基本上www.example.com与example.com没有任何关系,如果你不配置任何东西。

您的“两个”域(www.example.comexample.com)是否指向由 EB 托管的同一页面?