
你可能已经用 React、Vue 或者就是纯粹的 HTML/CSS/JavaScript 精心打造了一个漂亮的静态网站。现在,是时候让全世界看到你的作品了。传统的做法可能是购买虚拟主机,然后用 FTP 客户端颤颤巍巍地上传文件。这种方式不仅过程繁琐,而且当你的访客来自世界各地时,访问速度往往不尽人意。
我用了一种现代、专业的方式来解决这个问题。采用一套被全球顶尖公司广泛使用的云原生架构来托管我的静态网站。这个架构的核心是三项亚马逊云科技的服务:
www.your-awesome-site.com)指向 CloudFront,让用户可以通过友好的地址访问你的网站 。这套架构并非遥不可及的复杂技术,恰恰相反,它是当今托管高性能静态网站的黄金标准。跟着这篇分享,你会发现,即便是个人开发者,也能轻松地为自己的项目搭建起这套企业级的网站基础设施。

第一步,使用 Amazon S3 来存放网站的所有文件。


my-static-website- 加上你的名字和日期。
index.html、error.html、CSS 文件、JavaScript 文件和图片文件夹等)上传到这个存储桶中。
默认情况下,Amazon S3 只是一个对象存储服务。需要明确告诉它,这个存储桶里的内容要作为一个网站来对外提供服务。
index.html。
error.html。
这是整个 Amazon S3 配置中最关键也最容易出错的一步。为了让互联网上的任何人都能访问你的网站文件,需要授予他们公共读取权限。这需要两步操作:“解锁”和“授权”。
亚马逊云出于安全考虑,默认会阻止对 Amazon S3 存储桶的所有公开访问。需要先为这个特定的存储桶解除这个限制。
这一步操作本身并不会让你的存储桶变公开,它只是允许你接下来通过存储桶策略来设置精细化的公开访问权限。这个“先解锁,再授权”的流程是理解 Amazon S3 权限模型的关键,它能有效防止因误操作导致整个存储桶内容被意外暴露。
现在已经“解锁”了,接下来需要明确地“授权”公共读取权限。
YourBucketName 替换为你自己的存储桶名称。{
"Version": "2012-10-17",
"Statement":
}这个策略的含义是:允许(Effect: "Allow")任何主体(Principal: "*")对你存储桶(Resource)中的所有对象(/*)执行读取操作(Action: "s3:GetObject")。
完成以上步骤后,你的 S3 存储桶就已经配置成一个可以公开访问的网站了。你可以回到“属性”标签页,在“静态网站托管”部分找到你的网站端点 URL,它看起来像 http://your-bucket-name.s3-website.your-region.amazonaws.com。在浏览器中打开它,你应该能看到你的网站了!
虽然网站已经上线,但它的访问速度受限于 Amazon S3 存储桶所在的单个亚马逊云区域。为了给全球用户提供最佳体验,需要引入 CloudFront。
“源”就是 CloudFront 获取内容的服务器,在这个案例中,它就是刚刚配置好的 S3 存储桶。这里有一个重要的选择,推荐使用更安全、更专业的方式。
特性 | S3 网站端点 | S3 REST API 端点 (配合 OAC) |
|---|---|---|
存储桶隐私 | 必须公开 | 可保持私有 |
源站协议 | 仅 HTTP | 支持 HTTPS |
安全性 | 较低 | 推荐/更高 |
配置复杂度 | 更简单 | 略微复杂(但更安全) |
采用 S3 REST API 端点 配合 源访问控制 (OAC) 的方式。这种方式允许 S3 存储桶保持私有,只允许 CloudFront 通过一个特殊的身份来访问,从而杜绝了直接访问 S3 的可能性,更加安全 。
your-bucket-name.s3.your-region.amazonaws.com)。
在创建分发的页面继续向下滚动,配置以下关键选项:
index.html。这样当用户访问你的根域名(如 https://www.your-awesome-site.com)时,CloudFront 会自动提供 index.html 文件 。Amazon CloudFront 分发的创建过程需要一些时间(通常是 5-15 分钟)。在此期间,你可以看到状态为“正在部署”。部署完成后,状态会变为“已启用”。
当 Amazon CloudFront 分发部署完成后,你可以在分发列表中看到一个“分发域名”,形如 d12345abcdefg.cloudfront.net。现在,要将域名指向这个地址。
example.com 而非 www.example.com)。
www.your-awesome-site.com,就在这里输入 www。如果你想配置根域名 your-awesome-site.com,则将此字段留空。如果你想让根域名和 www 子域名都能访问你的网站,你可以为它们分别创建别名记录,都指向同一个 CloudFront 分发。
大功告成!现在,在浏览器中输入你的自定义域名,稍等 DNS 传播生效后,你就能看到一个通过全球 CDN 加速、并由 HTTPS 加密保护的专业网站了。
来看看刚刚搭好的这套架构有多牛:
以上就是本文的全部内容啦。最后提醒一下各位工友,如果后续不再使用相关服务,别忘了在控制台关闭,避免超出免费额度产生费用~