【问题标题】:How to point a domain to serve static site from Amazon S3? (not sub-domain)如何指向域以从 Amazon S3 提供静态站点? (不是子域)
【发布时间】:2011-11-17 15:08:36
【问题描述】:

我看到有几个人描述了如何为具有子域的自定义域执行此操作,但没有人谈论没有子域如何执行此操作。

示例:Setting foobar.com and www.foobar.com to point to my Amazon S3–hosted site

我个人不想要 www 前缀。有没有办法做到这一点?亚马逊将其设置为允许静态站点和自定义域,然后将其锁定到前缀域,我似乎很疯狂?

提前致谢,

【问题讨论】:

    标签: amazon-s3 dns


    【解决方案1】:

    由于历史原因,任何 URL 都需要解析为您已经知道如何处理的子域:使用您的 DNS 提供商创建 CNAME 记录,将 www 指向您的 S3 托管子域。有一些细节是正确的,在别处有很好的描述。

    您仍然希望支持那些喜欢他们的浏览器会自动完成 http://.com 等的用户,想要输入一个裸域 domain.com,并让它自动完成到您的默认子域,例如 @987654325 @。

    完成此操作的最简单方法是使用www 作为您的默认子域,并将您的DNS 提供商的A 记录指向wwwizer.com (174.129.25.170)。它们会自动将任何裸域重定向到前面带有www 的同一个域。

    如果您使用 Amazon Route 53 提供 DNS 服务,您将获得最快的开发周转时间,并且您的访问者获得最快的 DNS 解析。 Route 53 可以将其 A 记录指向wwwizer.com。但是,您可能想要创建一个微型 Amazon EC2 实例并开始对其进行编程。在 50 年代,每个人都重建了自己的汽车。在 80 年代,每个人都在 Fry's 的过道上推着购物车,并建造了自己的电脑。现在,您希望能够在云中构建自己的计算机,随着时间的推移您会发现很多原因,Amazon EC2 是最佳选择。目前,您的云计算机将为您简单地处理裸域。后来,发邮件,生成静态网站,...

    安装 Apache 网络服务器(LAMP 中的 A;LAMP 服务器可以解决问题),并为您的每个域配置一个虚拟主机。然后将弹性 IP 地址指向您的 EC2 实例,并更新 Route 53 以使您的 A 记录指向该弹性 IP 地址。 Amazon 不支持多个弹性 IP 指向同一个 EC2 实例,但您可以为多个域 A 记录提供相同的弹性 IP,并让 Apache 在您的 EC2 实例中解决此问题。

    这需要一些摆弄和试验,因为在细节上有很多相互矛盾的建议。我使用了ami-ad36fbc4 实例映像(美国东部,64 位 EBS 支持的 Ubuntu 10.04 LTS),因为我对 Ubuntu 很熟悉,有很多关于 Ubuntu 的在线帮助,而且这个映像将得到多年的支持。我编辑了/etc/apache2/httpd.conf 以获得内容

    NameVirtualHost *
    
    <VirtualHost *>
    ServerName first.net
    Redirect permanent / http://www.first.net/
    </VirtualHost>
    
    <VirtualHost *>
    ServerName second.net
    Redirect permanent / http://www.second.net/
    </VirtualHost>
    

    然后使用检查错误

    sudo /usr/sbin/apache2ctl configtest
    

    然后使用重新启动 Apache 服务器

    sudo /etc/init.d/apache2 restart
    

    Apache 是 Linux 风格的标准,但文件位置等细节可能会有所不同,例如/etc/apache2/httpd.conf 可能是 /etc/httpd.conf。例如,可能需要在httpd.conf 中添加Listen 80,但如果该命令已经在其他地方,Apache 会抛出错误。因此,请谨慎阅读网络说明,并准备好通过 Google 搜索任何错误消息。

    由于我已经使用 Amazon Route 53 数天来指向 wwwizer.com,因此在我更新 Route 53 以指向我的弹性 IP 后,它立即起作用。在切换到 Route 53 之前,我需要几天时间来验证每个更改,因为信息会在网络上传播。一旦每个人都知道要关注亚马逊,亚马逊就可以更快地传播其内部变化。

    【讨论】:

      【解决方案2】:

      很遗憾,您不能将 foobar.com 指向 Amazon S3 存储桶,其原因与 DNS 的工作方式有关。

      DNS 不允许域的根(称为 zone apex)指向另一个 DNS 名称(您不能将 foobar.com 设置为 CNAME / 只有 subdomain.foobar.com 可以是 CNAME)

      【讨论】:

      • 伙计,这太令人失望了。不过,感谢您清理它;我在任何地方都找不到明确的答案!
      • 现在 Route 53 支持 ALIAS 记录,这个答案不再正确。别名记录允许域的顶点返回存储桶、云前端分布、弹性负载均衡器或同一域中的另一个主机名的 A 记录(最后一个的要点是可以在没有双精度的情况下执行此操作-CNAME 的倾角)。
      【解决方案3】:

      自从提出这个问题后,情况发生了变化。现在可以使用根域在 S3 上托管您的站点。

      您必须创建另一个具有裸(根)域名的存储桶,而不是只有一个名为“www.yourserver.com”的存储桶,例如“yourserver.com”。

      之后,您将不得不使用 Amazon 的 DNS 服务 Route 53。为裸域创建一个 A 记录,为“www”主机名创建一个 CNAME。

      请注意,您需要将域的域管理完全移至 Amazon Route 53。

      在此处查看详细的演练:http://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html

      【讨论】:

        猜你喜欢
        • 2011-06-29
        • 2021-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-24
        相关资源
        最近更新 更多