我建立了自己的个人CDN

2020-10-15 00:21:46

内容递送网络(CDN)指的是地理上分布的一组服务器,它们协同工作以提供因特网内容的快速递送。

CDN允许快速传输加载Internet内容所需的资产,包括HTML页面、JavaScript文件、样式表、图像和视频。CDN服务的受欢迎程度持续增长,如今大部分网络流量都是通过CDN提供服务的,包括来自Facebook、Netflix和Amazon等主要网站的流量。

正确配置CDN还可以帮助网站抵御一些常见的恶意攻击,如分布式拒绝服务(DDOS)攻击。

TL;DR A CDN是一个遍布世界各地的计算机网络,可以高效地提供内容。

我经常发现自己需要托管公共静态文件。我希望以一种快速、高效、可靠和可伸缩的方式来实现。

我还发现它在Reddit上很流行,谁知道还能去哪里呢。长话短说。一眨眼的功夫,我的域名就有了大量的流量。

就在几周前,我非常幸运地将joel.net搬到了Hashnode。我之前的网络主机不可能处理那么多的流量。即使在流量激增期间,joel.net也一直在线。

因为我还托管其他文件,所以我最好做好准备。所以我计划使用完整的CDN。

这就是云焰的用武之地。我使用它们来托管joel.net的DNS。默认情况下,CloudFlare将通过免费的DNS提供这些CDN功能。🔥。

你可以使用任何静态的网络主机,但是我选择S3是因为它是我已经熟悉的。

S3存储桶名称必须与域名匹配。在本例中,我使用cdn.joel.net作为我的存储桶名称。

现在,我需要将此存储桶配置为公共访问。因此,我转到权限,然后转到存储桶策略。

我将存储桶名称cdn.joel.net插入到Resource中,然后将其粘贴到存储桶策略编辑器中。

{:";2012-10-17";,::[{:";PublicReadGetObject";,:";Allow";,:";*";,:";s3:GetObject";,:";ARN:aws:s3::cdn.joel.net/*";}]}。

我选中了使用这个存储桶来托管一个网站,并设置了我的index.html和我的404/404.html。我将为我的404创建一个目录,这样我也可以在那里托管与404相关的资产。

此时,我可以上传一个文件,并通过从此页面访问终结点来确保它正常工作。

最后一步是设置我的Cloudflare DNS以指向我新创建的S3存储桶。

为此,我添加了一个名为CDN的新CNAME记录,并将目标设置为S3存储桶的域。

此时,我应该可以使用我的自定义域名访问我的存储桶了。那么让我们测试一下我的404页http://cdn.joel.net.吧。看起来它起作用了!

现在,为了检查最后一件事,我打开开发人员控制台,单击Network选项卡,单击Request cdn.joel.net并转到Headers。

这里我可以看到内容编码:br。这意味着HTML是使用Brotli压缩算法压缩的,全部由Cloudflare自动为我完成。

附:如果设置此设置,请确保您提供的是HTML和相关内容,这样您就不会违反Cloudflare TOS第2.8节。