代码之家  ›  专栏  ›  技术社区  ›  Sam

在s3上用https托管spa或静态网站的最便宜方法

  •  2
  • Sam  · 技术社区  · 5 年前

    问题

    我希望托管多个网站,每个网站都有ssl(https),而且不必花费太多。

    如果可能的话,我还想继续使用route53(但不是必要的),因为我知道如何使用它,而且每月只需花费0.50美元。

    背景

    我对后端/服务器的理解非常有限。

    我已经创建了一些react网站(我认为我正确地使用了static这个词,javascript有一些改变),目前我正在ec2上托管每个网站。我使用certbot(let encrypt)为我的网站启用了https。域名通过route53和namebeach处理。

    S3和CloudFront

    我想把我的网站放在S3上以节省成本。不过我需要https。大多数 tutorials 我在谈论使用cloudfront。看起来像 cloudfront 我的成本和我的EC2差不多,所以 在我看来不是解决办法 . 也许我错了?费用会不会微不足道?

    路线53&nginx

    看来我可以在53号公路上做到这一点?特里安 answer 来自Gianluca Casati,但他没有提供足够的细节让我合作。

    Some other tutorials 解释一下,但是如果你想设置一个nginx服务器,我真的不知道那是什么。如果可能的话,我想避免nginx,但如果必须的话,我会用它的。

    这开始变得非常复杂,所以我想知道是否有更简单的方法。如果不是,所有的步骤是什么


    旁注(如果你也能回答这个问题,那会有帮助,但不是必须的)

    我也希望良好的搜索引擎优化。对于至少一个网站,看起来这将涉及到动态渲染,使用rendertron或puppeter或其他东西。不是我所有的网站都需要这个,但有一个会。很高兴知道这是否可能。


    总结:

    • 我正在寻找一种经济有效的方法来托管多个静态网站
    • 看起来这种方法是通过在amazon s3的
    • 我希望每个网站都有ssl(https)
    • 看起来cloudfront可以做到,但无论如何也不会帮我省钱
    • 看来有一种方法可以在53号公路上做到这一点
    • route53方法可能需要一个nginx代理服务器,我不知道这在很大程度上是什么。
    1 回复  |  直到 5 年前
        1
  •  2
  •   Aaron    5 年前

    我会尽力回答你的问题。

    云锋:费用会不会微不足道?

    是的,难以置信。以下是我的aws账户中的一张随机账单截图:

    enter image description here

    以下是典型AWS发票上的CloudFront定价明细:

    enter image description here

    我能用53路吗?

    是的,这是必要的。nginx不是必需的。

    您需要的4项AWS服务是:

    • S3:创建一个启用了“Web托管”的bucket,并使用与所需域URL相同的名称。例如:“www.jacobswebsite.com”或“jacobswebsite.com”
    • cloudfront:因为不能直接在s3存储桶上安装ssl证书,但是可以在cloudfront发行版上安装ssl。
    • 路线53:当用户输入你的url时,你用来指向你的dns记录的东西。简单地说,您将把“www.mysite.com”dns记录指向cloudfront,cloudfront将指向您的s3 bucket。
    • aws证书管理器:通过它,您可以生成与浏览器兼容的免费自动续订ssl证书。如果Route53正在为您的域处理DNS,则SSL生成是一个单击式设置,大约需要等待30分钟。然后,您可以从下拉菜单将这些ssl证书安装到cloudfront发行版中。

    这是一个很好的基本程序指南:

    https://medium.com/@sbuckpesch/setup-aws-s3-static-website-hosting-using-ssl-acm-34d41d32e394

    对于基本设置,可以跳过有关ses的部分,但如果需要设置提交到电子邮件收件箱的表单,则可能需要查看它。

    简而言之,答案是肯定的。您可以使用s3和cloudfront来实现您的目标,而无需掌握大量的后端服务器知识,而且每月只需花费一分钱。上面描述的方法和服务正是您所做的。

        2
  •  0
  •   lionels    5 年前

    我们构建了一个brick,完全按照您的要求,在s3上使用带有cloudfront和url重写规则的https来获得对seo友好的url。

    https://github.com/icdotdev/iclab.website

    按照自述文件中的步骤操作,您应该能够以一种无服务的方式托管您的站点。

    如果您已经配置了路由53,只需将 hosted_zone_id 创建砖块时的参数。

    如果您已经为您的域颁发了证书,请将 certificate_arn 参数。

    PS:我是一个开源项目ic.dev的合著者:)

        3
  •  0
  •   Fabio Manzano    5 年前

    雅各伯 here 是使用cloudfront设置https的官方指南。更具体地说,您希望为 communication between viewers and CloudFront .

    尽管上面的链接提供了关于设置的一般信息/理解,正如您所说,关键是您需要服务 多个域 通过https从cloudfront。知识中心的这一页告诉你 确切地 你需要什么: https://aws.amazon.com/premiumsupport/knowledge-center/multiple-domains-https-cloudfront/

    简而言之:

    1. 在分发设置(cloudfront)中配置cnames。

    2. 为您的域配置ssl证书(视频说明了如何通过aws的acm创建它们,但是您也可以在其他地方购买wildard或多域证书。 Here 是一篇很好的文章,解释了它们之间的区别。

    3. 将cnames指向您的cloudfront域(通过route53或您使用的任何dns提供商完成)。

    注意如果你不能使用 SNI 由于旧的浏览器不兼容,这将花费您更多的钱,因为您将需要每个域一个IP——见下图。SNI是最具成本效益的选择,我想这就是你的问题所在。你可能想看看 here 更多细节。

    Image from cheapsslsecurity.com

    希望有帮助!

        4
  •  0
  •   omerkarabacak    5 年前

    您可以为此目的使用cloudflare。有一个例子也许对你有帮助: https://www.engaging.io/easy-way-to-configure-ssl-for-amazon-s3-bucket-via-cloudflare/