现存的Github Page设置CNAME域名为A
,但是访问速度有时候不如人意。
现在的目标是,在域名B
上提供和A
相同的服务,在A
连接不上时多一个选择。
前言
Cloudflare
时不时抽风阻断,Gcore
没几个ip能用,Fastly
不支持Websocket,可以白嫖的CDN已经不多了。
现在举个例子,Github Pages地址为nicennnnnnnlee.github.io
,CNAME域名A为nicelee.top
,在fastly使用域名B为fastly.nicelee.top
。
需要注意的配置有:
- 填写镜像
github.io
地址
- Enable TLS,并指定443端口
- 设置请求的SNI,这里指的是CNAME的
A
域名
- 验证服务器给的证书的域名,填写
github.io
地址
- 设置覆盖的Host地址,所有的HTTP请求转到Github服务器时都会从
B
变为A
重定向问题
像 https://fastly.nicelee.top
、https://fastly.nicelee.top/[Github项目名]
这种地址,Github会在后面加一个/
作为301重定向的location。
我们不想看到的是,它的location不是/
、/[Github项目名]/
这种,而是带上了域名A
,变成了
https://nicelee.top/
、https://nicelee.top/[Github项目名]/
。这样,访问域名B
还是会在不经意间跳转到A
。
解决方案是:
通过fastly特有的vcl
脚本,在DELIVER
阶段将Location
地址的host替换掉
if (resp.status == 301) {
set resp.http.Location = std.replace_prefix(resp.http.Location, "https://nicelee.top", "https://" req.http.host);
return (deliver);
}