amazon-web-services - 导航到网站会产生代码:使用 cloudflare 时的 NoSuchBucket
问题描述
所以我目前在域下使用 Cloudflare 作为我的 DNS,www.movez.co
但由于某种原因,当有人http://movez.co
直接在他们的网络浏览器中输入时,它会吐回:
404 Not Found
Code: NoSuchBucket
Message: The specified bucket does not exist
BucketName: movez.co
RequestId: 64038C65xxx
HostId: xxx
当然,我们的 bucked 是命名www.movez.co
的,我们的根记录指向正确的存储桶 ( www.movez.co.s3-website-us-east-1.amazonaws.com
),我们的 www CNAME 记录作为别名指向根。该存储桶可公开访问,但由于某些原因,特定 iPhone 用户被放入 404 页面。
谁能帮我弄清楚为什么会这样?
我已尝试清除缓存,但我们的注册商(GoDaddy)没有重定向重定向记录。
解决方案
这里的问题是 CNAME 在 DNS 级别上运行,而不是在 HTTP 级别上运行。CNAME 会导致请求被转发到 的 IP 地址www.movez.co.s3-website-us-east-1.amazonaws.com
,但 HTTP 请求仍会说它正在寻找moves.co
。HTTP 请求不包含请求中的www.movez.co.s3-website-us-east-1.amazonaws.com
任何www.moves.co
位置,因此亚马逊无法知道该请求应该从www.movez.co
.
我建议在 Cloudflare 中设置一个页面规则,将客户端的浏览器movez.co
从www.movez.co
. 如果您不想使用浏览器重定向,那么您需要配置 Amazon 以理解movez.co
(可能通过创建一个完整的单独存储桶),或者您可以使用 Cloudflare Worker 来重写 HTTP 请求(但是您'为此,您需要向 Cloudflare 支付额外费用)。
推荐阅读
- javascript - 使用 XMLHttpRequest(纯 JS)向 PHP 发送数组
- dart - petitparser 解析器可以安全地重用吗?
- godot - Godot:在实例节点的子节点上添加_child() 以递归创建对象
- c++ - 声明一个向量返回类型函数并返回向量
- typescript - 拒绝()调用后承诺不会终止
- android - 在同一个 Android 项目中添加 Firebase 身份验证和 Firebase 管理员
- ruby-on-rails - 覆盖 Rails 中验证的默认 Parsley 翻译
- gulp - 如何在不使用 Webpack 的情况下使用 gulp-sass 编译 Material.io 设计?
- ms-access - 新手传输数据 3041
- javascript - 生成一个数组数组,当添加时等于给定数字