Cloudfront не перенаправляет должным образом на https и поддомен - PullRequest
0 голосов
/ 21 июня 2019

Согласно этой публикации и этой статье необходимо создать второй дистрибутив облачного фронта перед корзиной S3, которая перенаправляет на другую корзину, которая содержит статические файлы.

В качестве имени контейнера внешнего интерфейса указано www.example.com, а для контейнера перенаправления - example.com.Я настроил свои ресурсы AWS в соответствии со следующим шаблоном облачной информации.

Однако возникают некоторые проблемы: если я нажимаю на example.com, он не перенаправляется на www.example.com, только когда я нажал другую ссылкуна сайте.Кроме того, он не загружает значок например.http://example.com перенаправляет на https://example.com. http://www.example.com не перенаправляет на https, веб-сайт не найден.

Чего мне не хватает в моих настройках AWS?

В этом упоминается не устанавливать свойство корневого объекта по умолчанию, чего я не сделал.Но может это как-то связано?

FrontendBucket:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: ${self:custom.frontendBucketName}
        AccessControl: PublicRead
        WebsiteConfiguration:
          IndexDocument: index.html
          ErrorDocument: 404.html
    RedirectdBucket:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: ${self:custom.redirectBucketName}
        AccessControl: PublicRead
        WebsiteConfiguration:
          RedirectAllRequestsTo:
            HostName: ${self:custom.frontendBucketName}
            Protocol: https

WebAppCloudFrontDistribution:
  Type: AWS::CloudFront::Distribution
  Properties:
    DistributionConfig:
      Origins:
      - DomainName: ${self:custom.frontendBucketName}.s3-website.${self:provider.region}.amazonaws.com
        Id: Frontend
        CustomOriginConfig:
          HTTPPort: 80
          HTTPSPort: 443
          OriginProtocolPolicy: http-only
      Enabled: 'true'
      Aliases:
      - ${self:custom.frontendBucketName}
      CustomErrorResponses:
      - ErrorCode: 404
        ResponseCode: 200
        ResponsePagePath: /index.html
      DefaultCacheBehavior:
        DefaultTTL: 31536000
        MaxTTL: 31536000
        MinTTL: 31536000
        AllowedMethods:
        - DELETE
        - GET
        - HEAD
        - OPTIONS
        - PATCH
        - POST
        - PUT
        TargetOriginId: Frontend
        ForwardedValues:
          QueryString: 'false'
          Cookies:
            Forward: none
        ViewerProtocolPolicy: redirect-to-https
        AcmCertificateArn: 'arn:aws:acm:us-east-1:xxxx:certificate/xxxx'
        SslSupportMethod: 'sni-only'

RedirectCloudFrontDistribution:
  Type: AWS::CloudFront::Distribution
  Properties:
    DistributionConfig:
      Origins:
        - DomainName: ${self:custom.redirectBucketName}.s3-website.${self:provider.region}.amazonaws.com
          Id: Redirect
          CustomOriginConfig:
            HTTPPort: 80
            HTTPSPort: 443
            OriginProtocolPolicy: http-only
      Enabled: 'true'
      Aliases:
      - {self:custom.redirectBucketName}
      DefaultCacheBehavior:
        DefaultTTL: 31536000
        MaxTTL: 31536000
        MinTTL: 31536000
        AllowedMethods:
        - DELETE
        - GET
        - HEAD
        - OPTIONS
        - PATCH
        - POST
        - PUT
        TargetOriginId: Redirect
        ForwardedValues:
          QueryString: 'false'
          Cookies:
            Forward: none
        ViewerProtocolPolicy: redirect-to-https
      ViewerCertificate:
        AcmCertificateArn: 'arn:aws:acm:us-east-1:xxxx:certificate/xxxx'
        SslSupportMethod: 'sni-only'


DnsRecord:
  Type: "AWS::Route53::RecordSet"
  Properties:
    AliasTarget:
      DNSName:
        Fn::GetAtt:
          - WebAppCloudFrontDistribution
          - DomainName
      HostedZoneId: XXXXX
    HostedZoneId: XXXX
    Name: ${self:custom.frontendBucketName}
    Type: 'A'

RedirectDnsRecord:
  Type: "AWS::Route53::RecordSet"
  Properties:
    AliasTarget:
      DNSName:
        Fn::GetAtt:
          - RedirectCloudFrontDistribution
          - DomainName
      HostedZoneId: XXXX
    HostedZoneId: XXXX
    Name: ${self:custom.redirectBucketName}
    Type: 'A'

1 Ответ

1 голос
/ 23 июня 2019

В настоящее время у вас есть проблема с DNS, вы не опубликовали запись DNS для "www.example.com".

У вас есть DNS для example.com -> CloudFront, но не для www.example.com, даже если вы добавили www.example.com в CloudFront CNMAE / Alternativedid, когда клиент получает 301 /302 с новым местоположением и просмотрите изменение в хосте, оно разрешает его снова.

curl -I --resolve www.example.com:443:13.249.210.66 https://www.example.com/index.html HTTP / 1.1 200OK Тип контента: текст / html Длина контента: 80232 Соединение: keep-alive Дата: вс, 23 июня 2019 10:07:43 GMT Последнее изменение: пт, 21 июня 2019 07:21:38 GMT ETag: "8d536768b2173a7f3869f4178f75b331«Сервер: AmazonS3 X-Cache: отсутствует из облачного фронта. Через: 1.1 7db8064d915149cac923df11147875f9.cloudfront.net (CloudFront) X-Amz-Cf-Pop: BLR50-C3 X-Amz-Cf-Id: wOpVoz1gVlxYDBORSfGRWHWH6HWH6MWH6FXWH6FXWH6FXWH6FXFXWH6FXWH6F6W6W6W6W6W6W6W6S1*

Вам просто нужно создать запись псевдонима в Route53 для www.example.com.

...