问题
我想托管多个网站,每个网站都使用ssl(https),并且不必花更多的钱。
如果可能的话,我也想继续使用Route53(但不是必需的),因为我知道如何使用它,而且每月只需花费$ 0.50。
背景
我对后端/服务器的了解非常有限。
我已经创建了一些React网站(我认为我正确地使用了static一词,其中一些内容随着javascript的变化而发生了变化),目前我将它们托管在ec2上。我使用certbot(lets-encrypt)为我的网站启用https。域名通过Route53和Namecheap处理。
S3和Cloudfront
我想将我的网站放到S3上以节省成本。我需要https。我看过的大多数tutorials都在谈论使用Cloudfront。看来cloudfront会让我付出类似于ec2所付出的代价,因此对我来说似乎不是一个解决方案。也许我错了?费用会微不足道吗?
Route53和NGINX
看起来我可以使用Route53做到这一点?詹卢卡·卡萨蒂(Gianluca Casati)有answer,但他确实没有提供足够的细节供我使用。
Some other tutorials对此进行了解释,但是谈论设置NGINX服务器,我真的不知道那是什么。我想尽可能避免使用NGINX,但如有必要,我会使用它。
这开始变得非常复杂,所以我想知道是否有更简单的方法。如果不是,则涉及所有步骤
旁注(如果您也可以回答此问题,将会有所帮助,但这不是必需的)
我也想要好的SEO。对于至少一个网站,看起来这将涉及使用rendertron或puppeteer等进行动态渲染。并非我所有的网站都需要这样做,但是一个会。很高兴知道这是否可能。
摘要:
答案 0 :(得分:5)
我将尝试按顺序为您的问题提供答案。
是的,是的。以下是来自我的AWS账户的随机账单的屏幕截图:
以下是典型的AWS发票上显示的Cloudfront定价明细:
是的,这将是必要的。 NGINX是不必要的。
这是基本程序的出色指南:
https://medium.com/@sbuckpesch/setup-aws-s3-static-website-hosting-using-ssl-acm-34d41d32e394
您可以跳过有关SES的基本设置部分,但是,如果您需要设置提交到电子邮件收件箱的表单,那么您可能需要调查一下。
简而言之,答案是肯定的。您可以在没有大量后端服务器知识的情况下使用S3和Cloudfront来实现目标,每月只需花几便士。上述方法和服务正是您的操作方式。
答案 1 :(得分:1)
Jacob,here是使用CloudFront设置HTTPS的官方指南。更具体地说,您要为communication between viewers and CloudFront启用HTTPS。
尽管如上所述,以上链接为您提供了设置的一般信息/理解,但关键的是,您需要通过HTTPS从CloudFront提供多个域。知识中心中的此页面告诉您准确您的需求:https://aws.amazon.com/premiumsupport/knowledge-center/multiple-domains-https-cloudfront/
简而言之:
在分发设置(CloudFront)中配置CNAME。
为您的域配置SSL证书(视频说明了如何通过AWS的ACM创建它们,但是您也可以在其他地方购买Wildard或多域证书。Here很不错发布说明它们之间的区别。
将CNAME指向您的CloudFront域(通过Route53或您使用的任何DNS提供商完成)。
请注意,如果由于旧的浏览器不兼容而无法使用SNI,则将花费更多的钱,因为每个域将需要一个IP-参见下图。 SNI是最具成本效益的选择,我想这就是您的问题所在。您可能想看看here了解更多详细信息。
希望有帮助!
答案 2 :(得分:0)
我们用CloudFront和URL重写规则完全按照您的要求构建了S3上的HTTPS,以获取SEO友好的URL。
https://github.com/icdotdev/iclab.website
按照自述文件中的步骤进行操作,您应该能够以无用的方式托管网站。
如果您已经配置了Route 53,则在创建积木时只需输入
hosted_zone_id
参数即可。
和
如果您已经为您的域颁发了证书,请提供
certificate_arn
参数。
PS:我是开放项目ic.dev的合著者:)
答案 3 :(得分:0)
您可以将Cloudflare用于此目的。有一个示例可能对您有所帮助: https://www.engaging.io/easy-way-to-configure-ssl-for-amazon-s3-bucket-via-cloudflare/
答案 4 :(得分:0)
如果您正在寻找一种更好的方式来使用 S3 和 Cloudfront 托管您的网站,而无需使用 Lambda 函数,我为此创建了一个分步教程,请查看https://www.youtube.com/watch?v=94DyGswSY6k&t=1475s