首页 MrHuangTalk架构升级——腾讯云CDN与AWS CDN搭建
文章
取消

MrHuangTalk架构升级——腾讯云CDN与AWS CDN搭建

今年1月份建立了我的个人博客 ,最开始网站和图片都放在Github Page上。稳定运行了一段时间后,看到不少反馈Github Page境内访问较慢,从此MrHuangTalk就可以是访问速度优化之路,经过几次搬迁和优化,从Github Page搬到Cloudflare Page,后来又搬到了Vercel,再后来又把页面中使用的图片单独拆出来放到不同的CDN,现在整个架构是这样的。

网站架构

整个过程不用写任何代码,仅通过在网页上配置就可实现。下面讲讲实现此架构的一些关键地方,各服务商的帮助文档关键节点写的比较简单,还得自己摸索。

网站CDN选择

通过测速网站,选了速度最快的Vercel。但也看到有人说测速网站是Vercel快,实际使用感受是Cloudflare快。如果你访问速度较慢,也请告知我(mrhuang@mrhuangtalk.com)。

网站测速

使用国内CDN服务的前提

需要有一个通过ICP备案的域名。很不幸,从22年5月9日后,腾讯云就不提供默认的CDN域名给用户,这就意味着如果需要使用国内的CDN服务,必须要有一个备案的域名。

不死心看了阿里云和华为云,都没有提供默认CDN域名,只能使用用户自定义域名。还好ICP备案相对简单,只要资料填写完整,审批通过还是很容易的。

所以不得已注册了mrhuang.sapce域名,为了备案,干脆又建了个我的摄影照片分享网站。也是静态网站,用了hugo 来搭建。

mrhuang.space

使用AWS S3搭建境内CDN加速服务

虽然腾讯云也有存储桶,可以直接使用腾讯云的CDN实现全球加速。一开始我也是这样部署的,结果发现放在境内存储桶和CDN的数据(阿里云也一样),Twitter等无法访问,导致我的Twitter帖子中的Twitter Card无法显示 。没办法,只能通过境内外分开部署解决。

Twitter Card

配置AWS S3访问账号

通过AWS IAM新建用户,权限设置为“AmazonBraketFullAccess”,记录好ID和密匙,以及用户 ARN。

修改S3存储桶的权限,使新建的用户具有只读权限。Princepal下AWS中填写新建用户的ARN,Action下配置“s3:GetObject”代表只读,Resource下填写存储桶的ARN名称。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "Stmt1655173479141",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::895535443196:user/myuser"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mys3******/*"
        }
    ]
}

腾讯云创建境内CDN

新建域名,加速区域选择中国境内,加速域名填入已经完成备案的二级域名(如:img.mrhuang.space),源站配置选择第三方AWS S3,源站地址按格式填写。

腾讯云CDN

由于S3为了安全性关闭了公有读,所以还需设置“回源鉴权”,访问ID和密匙填入之前在AWS IAM新建用户时保存好的信息。

CDN回源

在域名管理DNS设置里设置好CNAME后,境内CDN加速就配置好了。

CDN

境内境外分流

腾讯域名管理免费版可以通过境内、境外不同线路进行解析,境外用户解析到AWS Cloudfront,境内用户解析到腾讯云CDN。

DNS分流

配置SSL证书

由于AWS Certificate Manager申请的证书只能导入无法导出,所以在腾讯云域名管理免费申请SSL证书,证书申请下来后可以很方便把证书应用到腾讯云新建的境内CDN。

下载申请好的证书,使用Nginx格式。

证书下载

进入AWS Certificate Manager,导入证书。注意区域选择“美国东部 (弗吉尼亚北部)(us-east-1)”,只有美国东部的证书能用于AWS Cloudfront CDN。

用vs code打开xxx.mrhuang.space_bundle.pem,把第一部分BEGIN CERTIFICATE与END CERTIFICATE之间的内容填入证书正文,xxx.mrhuang.space.key的内容填入证书私钥。注意必须是RSA格式的私钥。

证书导入

AWS Cloudfront 使用导入的证书

为S3配置好Cloudfront CDN后,增加与腾讯云一致的自定义域名,并使用刚刚导入的证书。

配置Cloudfront

通过dig命令简单测试下,不同地址访问img.mrhuang.space相应的域名,境内返回腾讯云CDN地址,境外返回AWS CDN地址。

通过 Twitter Card Validator 验证成功,至此所有配置完成。

Twitter Card Validator

本文由作者按照 CC BY 4.0 进行授权

#16 - 又发现一家符合巴菲特投资体系的企业

#17 - 好到难以置信