【问题标题】:DNS redirect to AWS S3 static website works with curl, but fails with browserDNS 重定向到 AWS S3 静态网站适用于 curl,但浏览器失败
【发布时间】:2021-06-25 02:02:15
【问题描述】:

我拥有 covaxx.dev 域,但它是在 NameCheap 注册的,而不是在 AWS Route53 注册的。

我遵循基本的guide to create a "static website" in S3,这工作得很好,index.html 按预期提供,存储桶名为covaxx.dev(应该如此)。

在 NameCheap 上,我已配置 DNS 规则以启用 URL 重定向,如 here 所述,使用 @www Host 字段,类型为 URL Redirect RecordValue存储桶的 URL:http://covaxx.dev.s3-website-us-west-2.amazonaws.com/

当我尝试使用curl(或httpie)访问该网站时,这是有回报的:

curl -L www.covaxx.dev   
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Find Vaccine</title>
</head>
<body>
<h1>Find Vaccine</h1>

<p>This script checks CVS.com for appointment locations near you with available vaccine doses:
it uses the Google Map API to find those which are within a given distance
from the user's chosen location.</p>

<h6>Copyright &copy; 2021 AlertAvert.com  All rights reserved.</h6>
</body>
</html>

从完整的跟踪 [0] 我可以看到重定向指向正确的位置(www.covaxx.devcovaxx.dev) - 到目前为止,一切都很好。

但是,当我尝试在浏览器(Firefox、Linux 和 MacOS;以及 Safari、MacOS、iOS)中加载页面时,它们一直在旋转,然后出现“服务超时”错误而超时。

老实说,这对我来说没有任何意义,我怀疑这可能与我的超偏执浏览器设置有关,但我不确定为什么会发生这种情况。 (我什至禁用了我的 VPN,以防它产生影响,但没有改变)。

非常感谢您解开谜团的任何帮助,在此先感谢!

[0] 完整跟踪:

$ curl -v -L www.covaxx.dev
*   Trying 192.64.119.50:80...
* TCP_NODELAY set
* Connected to www.covaxx.dev (192.64.119.50) port 80 (#0)
> GET / HTTP/1.1
> Host: www.covaxx.dev
> User-Agent: curl/7.68.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Found
< Server: nginx
< Date: Mon, 29 Mar 2021 00:12:07 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 76
< Connection: keep-alive
< Location: http://covaxx.dev.s3-website-us-west-2.amazonaws.com/
< X-Served-By: Namecheap URL Forward
< 
* Ignoring the response-body
* Connection #0 to host www.covaxx.dev left intact
* Issue another request to this URL: 'http://covaxx.dev.s3-website-us-west-2.amazonaws.com/'
*   Trying 52.218.234.242:80...
* TCP_NODELAY set
* Connected to covaxx.dev.s3-website-us-west-2.amazonaws.com (52.218.234.242) port 80 (#1)
> GET / HTTP/1.1
> Host: covaxx.dev.s3-website-us-west-2.amazonaws.com
> User-Agent: curl/7.68.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< x-amz-id-2: s6Hcwjf1E0Prv4QLJTGh9EaTZn5K1YTJy3FmQEtk598OIMyDv/wDeWFR/gzhgn1wgYAN5a/Y2bk=
< x-amz-request-id: 57BM0MN4P842GRFP
< Date: Mon, 29 Mar 2021 00:12:09 GMT
< Last-Modified: Mon, 29 Mar 2021 00:12:03 GMT
< ETag: "8853123d304bc0f26bbe8af3e7a1f71a"
< Content-Type: text/html
< Content-Length: 429
< Server: AmazonS3
< 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Find Vaccine</title>
</head>
<body>
<h1>Find Vaccine</h1>

<p>This script checks CVS.com for appointment locations near you with available vaccine doses:
it uses the Google Map API to find those which are within a given distance
from the user's chosen location.</p>

<h6>Copyright &copy; 2021 AlertAvert.com  All rights reserved.</h6>
</body>
</html>
* Connection #1 to host covaxx.dev.s3-website-us-west-2.amazonaws.com left intact

【问题讨论】:

  • 即使你的域名没有注册到Route53,你也可以把它托管在Route53上,只要把Namecheap DNS服务器改成AWS DNS Servers,然后为那个域创建一个区域,最好用CloudFront使用您的 S3 托管网站,然后将您的域名重定向到 CloudFront 分配
  • 您多久前设置了重定向?在您的浏览器中,启用调试 (F12)。重新加载页面并观察网络跟踪。您看到了哪些活动和问题?刷新本地 DNS 缓存 ipconfig /flushdns (windows) 或类似的 Linux。使用 mxtoolbox.com 等 Internet 工具验证您的 DNS 设置。

标签: curl amazon-s3 redirect dns


【解决方案1】:

谜团解开,在这里发帖以防万一有人遇到同样的问题。

根本原因是 HSTS,这是一个(相对)新的协议,它告诉浏览器仅在特定域中使用 https - 这通常无关紧要,因为我们在重定向中使用 http(现在,无论如何),它应该工作得很好。

唉,我使用 URL Redirect 和 NameCheap,所以请求将发送给他们,并且可能在重定向迷宫中,有时浏览器被告知切换到 https。 这个设置在浏览器中是“粘性的”,它会被缓存(我被告知)几个月,甚至。

然后,AWS 的怪癖是,如果你想重定向一个子域(例如 www),你需要创建一个“重定向桶”,空的,命名为 exactly 作为子域(www) 并配置(在“属性”选项卡中)重定向到原始“域存储桶”(同样,必须完全命名为域 covaxx.dev)。

不幸的是,在设置存储桶重定向时,我误解了指南中的说明,而不是 covaxx.dev.s3-website-etc. 我将其设置为 s3://covaxx.dev

因此出现了两个错误,这让浏览器感到困惑,但令人惊讶的是,curl(或httpie)却没有,dig 很高兴地解析了这些域。

要解决这个问题,我必须采取两个步骤:

  1. 显然,修复存储桶重定向,将www 存储桶指向从covaxx.dev.s3-website-us-west-2.amazonaws.com 提供服务;

  2. 将我在 NameCheap 的 DNS 配置更改为使用 CNAME 记录,将 covaxx.dev 重定向到 covaxx.dev.s3-website-us-west-2.amazonaws.com

瞧,现在导航到 http://www.covaxx.dev 可以正常工作(如果您之前没有通过浏览器尝试过的话)。

【讨论】:

  • HSTS 大约有 10 年的历史。 Google 要求 .dev 域仅使用 HTTPS。
  • 因此我的“相对”——在互联网 (DNS/IP/HTTP) 术语中,一个年轻人:) 并且与大多数人以及谷歌自己认为的相反,他们(还)不是王者互联网的宇宙和唯一的统治者,所以http://www.covaxx.dev 工作得很好。
  • 我刚刚完成了相同的练习,除了使用 Google Domains。他们在指南中提供的简单的一页 index.html 是我试图使用的全部内容......它通过 s3 存储桶内部 URL 加载,但无法通过面向公众的域名工作。添加我自己的详细信息以帮助他人。对我来说,我能够在我的windwos WSL平台上使用curl和lynx很好地检索页面(具有讽刺意味的是,它可能比您上面列出的协议更早!!)但它不能在windows上使用Chrome或Firefox。
猜你喜欢
  • 1970-01-01
  • 2018-04-18
  • 2016-03-08
  • 2015-08-08
  • 1970-01-01
  • 1970-01-01
  • 2019-12-22
  • 1970-01-01
  • 2022-01-03
相关资源
最近更新 更多