无法使用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解析时的某个环节造成了这个问题。

1 Antwort
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
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen