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

jre*_*emi 35 dns amazon-s3 amazon-web-services

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

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

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

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

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

jre*_*emi 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.
Run Code Online (Sandbox Code Playgroud)

在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)
Run Code Online (Sandbox Code Playgroud)

使用此配置,在根域中进入的任何网络流量都可以访问Amazon S3存储桶容器"domain.com",然后通过Amazon自动重定向到主S3存储桶"www.domain.com",该存储库可以提供所有静态服务内容.

如果有人试图直接在www域上连接,它将直接进入Amazon S3容器"www.domain.com",而不需要通过"domain.com"存储桶重定向.

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

  • 这不是合法的DNS配置.根据RFC1034,您不能同时使用相同名称提交CNAME和其他记录类型.区域根目录至少包含SOA和NS记录,但您最有可能在此配置中看到的问题涉及通过MX记录进行邮件路由.请参见http://serverfault.com/questions/613829/why-cant-a-cname-record-be-used-at-the-apex-aka-root-of-a-domain. (5认同)

sir*_*sam 23

所以我使用了jremi的答案,但如下所述,电子邮件的发送存在问题.经过一段时间的NameCheap支持,我有一个有效的解决方案.

NameCheap设置

CNAME Record          www   domain.com.s3-website-us-west-1.amazonaws.com.
URL Redirect Record   @     www.domain.com  (unmasked)
Run Code Online (Sandbox Code Playgroud)

S3设置(只需要1个桶)

[S3 Bucket] 
Bucket name: www.domain.com     <---- This must match your domain exactly
Static website hosting set to:
"Enable website hosting"
Run Code Online (Sandbox Code Playgroud)

S3存储桶策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::www.domain.com/*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这允许domain.com和www.domain.com都可以工作,我的NameCheap电子邮件也可以工作.

  • 我相信一个URL重定向记录要求你指定包含协议的URL,所以它是```http:// www.example.com```当我遗漏```http://```我得到了一个Namecheap控制台中的错误,表示网址格式错误. (7认同)
  • [如果有人想知道 - 您的存储桶名称必须与您的域完全相同](https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html#root -域演练创建存储桶)。@sirclesam 这样做不仅仅是为了举例 (2认同)