使用Namecheap DNS进行Amazon S3静态托管 - 如何正确路由非www前缀URL

问题描述 投票:30回答:3

我一直在阅读其他帖子,试图深入到这个问题的底部......但我需要一些澄清。

进入www.FOO.com/MyDirectory时,我能够完全获得所有域请求以完全打开我的Amazon S3存储桶

如果我在没有www的情况下输入FOO.com/MyDirectory,它将失败。

在没有www路由的情况下将URL请求正确地发送到同一个Amazon S3存储桶的正确方法是什么?

任何提示都会有很大帮助。谢谢

amazon-web-services amazon-s3 dns
3个回答
39
投票

我终于找到了以下解决方案:

我正在使用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”存储桶重定向。

希望这将有助于任何正在解决问题的人正确制定根域流量路由。


18
投票

所以我使用了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电子邮件也可以工作。


1
投票

我上面使用了sirclesam的方法,它让我有95%的路在那里,但我的网站仍然无法加载,直到我去改变我的AWS S3控制台中的一些配置。

以下是要采取的步骤:

  1. 导航到S3仪表板
  2. 点击你想要使用的水桶(www.domain.com)
  3. 单击“权限”导航栏选项卡
  4. 一个框应该出现两列,并在框的右上角有一个“编辑”按钮 - 单击该编辑按钮
  5. 应该有4个总复选框 - UNCHECK底部的两个
  6. 保存然后尝试访问您的网站

这对我有用。我最初遵循的指南只指出需要检查一个(第三个)复选框,但这导致我的存储桶仍然阻止访问,因此取消选中最后一个复选框是解决问题的原因。

为了进一步说明,第一个复选框(应该是UNCHECKED)读取:“阻止对通过新的公共存储桶策略授予的存储桶和对象的公共访问”,第二个复选框(也应该是UNCHECKED)读取:“阻止公共和跨帐户通过任何公共存储桶策略访问存储桶和对象“

© www.soinside.com 2019 - 2024. All rights reserved.