现存的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);
}