无法使用Route53解析CloudFront自定义域名

0

【以下的问题经过翻译处理】 我创建了一个S3存储桶,通过CloudFront使用https来分发该网站。在该存储桶中,我为每个环境设置了一个文件夹,并在生产文件夹中创建了一组版本文件夹,结构如下:

my-bucket
|-dev
|-prod
  |-v1.0
  |-v1.0.1
...等等。

我最初使用开发(Development)环境域名https://dev.mydomain.org访问这个网站时正常,但是当我决定将CloudFront分发中的备用域名更改为Production名称(即https://mydomain.orghttps://www.mydomain.org)并更新源路径后,它停止了工作。

我正在使用Route53来管理DNS,没有删除托管区域。据我所知,所有NS服务器条目匹配。我已经多次删除和重新创建了指向具有两个备用域名的CloudFront分发的AAAA别名记录但并没有解决问题。我也已经从分发中删除并重新添加了备用域名。(在更改分发后重新创建了Route53 AAAA记录。)

我可以正常地dig我的域名。 Route53测试也正常返回(就它的value而言)。但是,如果我尝试ping或curl,则会出现“unknown host”错误。在浏览器中访问https://mydomain.org同样返回DDNS_PROBE_FINISHED_NXDOMAIN响应。

另外,我使用了这个CloudFront Function与我的CloudFront分发关联,以将https://www.mydomain.org请求重新路由到https://mydomain.org

function handler(event) {
  var request = event.request;

  var headers = request.headers;
  var host = request.headers.host.value;

  if (host.startsWith('www')) {
    var response = {
      statusCode: 301,
      statusDescription: 'Moved Permanently',
      headers: {
        location: {
          value: 'https://' + host.replace('www.', ''),
        },
      },
    };

    return response;
  }

  return request;
}

但是我将该函数取消与CloudFront分配的关联后也没有解决问题。此外,当我访问CloudFront的默认域名时网站时正常工作的。我怀疑在DNS解析时的某个环节造成了这个问题。

profile picture
专家
已提问 5 个月前5 查看次数
1 回答
0

【以下的回答经过翻译处理】 我采取了一些步骤来解决这个问题。首先,我在本机的Terminal会话中使用以下命令清除了Macbook Pro上的DNS缓存:

sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder

我还清除了所有浏览器的Web缓存并重新启动了笔记本电脑。随后我发现,该网站在其他先前未用于访问它的计算机上运行良好。这表明了这是笔记本电脑本身的问题。确保给DNS缓存足够的时间来清除(几分钟应该足够)。

我忽略的另一件事是创建A记录别名到CloudFront分配 - 我只创建了AAAA记录(Amazon推荐使用)。在我的情况下,由于我使用手机热点,很难诊断该问题。大部分时间,我分配的是IPv6地址,因此网站看起来很好。但是,它会随机停止响应浏览器请求 - 我怀疑在这些情况下,PC被分配了IPv4地址,因此在寻找A记录而不是AAAA记录。我为什么这么想?我让朋友们查看我的网站,他们一开始没有看到它 - 因此,他们计算机上的DNS缓存不是问题。

所以,创建A和AAAA别名记录。IPv4将在很长一段时间内存在,并且您根本无法预测您的听众将请求什么类型的记录。如果您遇到困难并且dig不报告错误,请同时清除Web和DNS缓存。

希望有人能发现这个有用。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则