【发布时间】:2017-01-11 04:08:34
【问题描述】:
我正在尝试像我之前的许多其他人一样在 S3 和 Cloudfront 上托管一个静态网站。我已经基本完成了所有设置,并为我的裸域(称为 example.com)和 www.example.com 创建了 LetsEncrypt 证书。
我有两个 S3 存储桶,称为 www.example.com 和 example.com,以及两个相应的 Cloudfront 分配,它们只是指向它们各自的 S3 存储桶,并且 Route 53 设置有两个 ALIAS A 记录。
example.com S3 存储桶包含我的网站,www.example.com 存储桶设置为重定向到https://example.com。
这工作正常。但是,烦人的是,当我需要更新两个域的 LetsEncrypt 证书时,我需要在 Cloudfront 中关闭 HTTP-to-HTTPS 重定向,然后禁用 www.example.com S3 存储桶的重定向,以便.well-known 质询可以从 LetsEncrypt CA 访问。这很烦人,因为这意味着访问 www 网站的用户在证书更新期间不会被重定向到裸域。
我正在考虑在两个存储桶上定义一个 S3 重定向规则,该规则将始终重定向到 https://example.com,但排除 LE CA 的 .well-known 文件夹。通过这种方式,我可以让 Cloudfront 同时提供 HTTP 和 HTTPS,在 S3 中处理重定向,并且 LetsEncrypt 更新将是完全透明的。但这似乎无法用 S3 路由语法来表达:https://docs.aws.amazon.com/AmazonS3/latest/dev/HowDoIWebsiteConfiguration.html
似乎没有办法表达“如果键前缀不等于”条件,或任何表达“如果条件不匹配,则什么也不做”的方式,因此似乎排除文件夹的任何尝试必然导致重定向循环。
有人能告诉我我缺少什么吗,或者这实际上在 S3 中是不可能的吗?似乎太基本的功能不能缺少!
【问题讨论】: