我一直在阅读其他帖子,试图深入到这个问题的底部......但我需要一些澄清。
进入www.FOO.com/MyDirectory时,我能够完全获得所有域请求以完全打开我的Amazon S3存储桶
如果我在没有www的情况下输入FOO.com/MyDirectory,它将失败。
在没有www路由的情况下将URL请求正确地发送到同一个Amazon S3存储桶的正确方法是什么?
任何提示都会有很大帮助。谢谢
我终于找到了以下解决方案:
我正在使用Namecheap来启用静态托管的DNS和Amazon S3存储桶...
该解决方案支持访问根域和www域的能力。在namecheap高级DNS配置中,我有以下设置:
CNAME Record @ domain.com.s3-website-us-west-1.amazonaws.com.
CNAME Record www www.domain.com.s3-website-us-west-1.amazonaws.com.
在Amazon S3配置中,我创建了两个单独的存储桶。
[S3 Bucket #1]
Bucket name: www.domain.com
Static website hosting set to:
"Enable website hosting"
[S3 Bucket #2]
Bucket name: domain.com
Static website hosting set to:
"Redirect all requests to another host name" pointing to www.domain.com (Bucket #1)
使用此配置,在根域中进入的任何网络流量都可以访问Amazon S3存储桶容器“domain.com”,然后通过Amazon自动重定向到主要的S3存储桶“www.domain.com”,该存储库提供所有静态服务内容。
如果有人试图直接在www域上连接,它将直接进入Amazon S3容器“www.domain.com”,而不需要通过“domain.com”存储桶重定向。
希望这将有助于任何正在解决问题的人正确制定根域流量路由。
所以我使用了jremi的答案,但如下所述,电子邮件的发送存在问题。经过一段时间的NameCheap支持,我有一个有效的解决方案。
NameCheap设置
CNAME Record www domain.com.s3-website-us-west-1.amazonaws.com.
URL Redirect Record @ www.domain.com (unmasked)
S3设置(只需要1个桶)
[S3 Bucket]
Bucket name: www.domain.com
Static website hosting set to:
"Enable website hosting"
S3存储桶策略
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::www.domain.com/*"
}
]
}
这允许domain.com和www.domain.com都可以工作,我的NameCheap电子邮件也可以工作。
我上面使用了sirclesam的方法,它让我有95%的路在那里,但我的网站仍然无法加载,直到我去改变我的AWS S3控制台中的一些配置。
以下是要采取的步骤:
这对我有用。我最初遵循的指南只指出需要检查一个(第三个)复选框,但这导致我的存储桶仍然阻止访问,因此取消选中最后一个复选框是解决问题的原因。
为了进一步说明,第一个复选框(应该是UNCHECKED)读取:“阻止对通过新的公共存储桶策略授予的存储桶和对象的公共访问”,第二个复选框(也应该是UNCHECKED)读取:“阻止公共和跨帐户通过任何公共存储桶策略访问存储桶和对象“