起因
此站点原先托管在Vercel,数据库由Railway提供,本来以为能够无限白嫖,直到——
Railway更新了他们的政策,把每月免费5美元额度改为了一次性2美元额度,或者提供信用卡升级计划。
再加上原本站点的速度就不快,于是更换服务的想法就产生了。
探索
DNS
迁移一个站点首先要更改DNS解析,这个域名是在腾讯云注册的,当时接入的是Cloudflare做解析,但是效果不是很理想,借这次机会,接入到了华为云解析。
Why? 请看对比。
服务商 | DNS节点 | 分线路解析 | TTL | 价格 |
---|---|---|---|---|
DnsPod | 免费:8个 付费≥12个 | 支持 | 免费:600s 付费:60s/1s | 专业版99元/年/个 企业版1800元/年/个 |
华为云 | ≥16个 | 支持 | 1s | 免费 |
阿里云 | 免费:4个 付费:国内9个,海外11个 | 支持 | 免费:600s 付费:1s | 个人版48元/年/个 |
Cloudflare | ≥20个(国内节点少) | 不支持 | 60s | 免费 |
综上,选择华为云DNS白嫖是最佳选择!
但是接入华为云DNS解析后,怪事就发生了——
在Status Page可以看到,我的所有域名服务被检测到Dns Lookup Failure错误。
翻来覆去,想了俩天,终于发现是迁移之后原先在Cloudflare的DNSSEC忘记删除了,导致权威DNS与Local DNS校验失败。
部署
此域名未备案,自然也就不可能解析到我境内的服务器上...吗?大错特错!(小声:我们可以伪造请求绕过备案)
从Railway拿完数据库,导入,服务器新建域名解析,一气呵成。新建域名为localhost,域名别名为baidu.com(需要备案的域名),根目录设在typecho目录下,安装php,然后给这个域名随便上一个https证书。
接下来我们需要境外的CDN(使用CF理论也可以完成操作),我选择的是微软云(不信你ping一下www.starsriverorg.cn),使用cname接入域名即可,接入之后代理主机设置为baidu.com,接入后我改成了A记录,因为这样可以自选ip。
在cf也加入这个域名的解析,解析到cdn,勾选代理,然后同样A记录自选ip。
最后,在华为云解析分线路,国内直接解析到微软云上,国外走cf的线路,搞定。看看效果:
优化
我仍不满足,为了国内的速度,新建了个域名lead.uotan.cn,与此域名同时启用。
但是当我访问新站点时,发现字体并没有生效。
在控制台中,找到如下错误:
Access to font at
'https://www.starsriverorg.cn/usr/
themes/Jasminemain/assets/dist
/font/HarmonyOS-Sans.woff2' from
origin 'https://lead.uotan.cn' has
been blocked by CORS policy: No
'Access-Control-Allow-Origin' header
is present on the requested
resource.
跨域问题🤔
我的解决方案是:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
add_header Access-Control-Allow-Origin * ;
add_header Access-Control-Allow-Methods * ;
add_header Access-Control-Allow-Credentials true;
}
location ~* \.(eot|otf|ttf|woff|woff2|svg)$ {
add_header Access-Control-Allow-Origin * ;
}
再把一些图片换成webp格式放cdn上,这样可以加快速度。用到的网站:Webp转换
累死,优化完成。