将白嫖进行到底——记一次网站服务迁移国外服务器流程

序言

先简单介绍一下这个网站吧,域名是几年前在阿里云买的,当时也入手了个服务器用于部署毕设项目,为了能正常访问网站也是备案过一次,服务器到期之后就没管了,但一直有在续域名。

两个月前用域名搭了一个博客,服务器白嫖的Github Page,图床使用的阿里云的OSS。(重点:公开访问!)

运行了小两月都没什么事情,直到在V2看到有人OSS存储被盗刷,损失好几千,吓得我赶紧开通了阿里的CDN服务,把Bucket私有化,然后用CND回源到OSS存储,给CND加上了各种流量控制,访问控制。

正当我以为一切都是如此美妙的时候,阿里云给我发来了信息,不到一个小时就把CND域名下线了…

2831f367c963dcf89ec44173f06a6e3

总之,只要将域名解析到了国内的空间就需要备案,否则就会限制域名无法访问。

无奈于备案流程实在繁琐冗长,况且我这小小网站根本没有国内服务器,备案还需要另外花费金币购买服务码,既然如此,那就将白嫖进行到底!

经过一番搜寻,我选择使用 Backblzae b2 作为图床,使用 Cloudflare 域名服务商做DNS解析和CDN代理工作。

Backblaze

为什么选择B2

最主要的原因是它免费、便宜!

存储前10GB内容完全免费,超过10GB的部分收取6$/month的费用。

对于我来说10GB的存储容量绝对是够够的。

创建Bucket

首先你需要注册一个账号,然后点击创建桶,填写Bucket名称,注意这个名称必须是唯一的。

桶的访问权限设置为Public,剩余参数全部默认即可。

image-20231130171713075

创建完之后CORS规则选择’与所有HTTPS来源共享此存储桶中的所有内容’。

image-20231130174423601

桶设定默认是不缓存,我们可以设置资源过期时间:

image-20231201092749937

点击上传/下载按钮,随便上传一张图片,查看图片信息:

image-20231130174840316

现在我们可以直接通过友好URL访问这张图片。

记住友好URL中的域名部分,后续Cloudflare代理时需要用到。

Picgo配置默认图床

如果不想每次上传文件都打开Backblaze网站,可以使用Pigco软件配置默认图床上传。

添加应用密钥

进入页面左侧Application keys点击 Add a new Application Key创建一个应用密钥,随便填写一个密钥名字然后选择要授权的Bucket和读写权限。

image-20231201142023112

配置Picgo

插件设置中搜索S3下载安装amazon s3 uploader插件,填写刚才生成的应用密钥和ID,地区填写你的Bucket Endpoint第二部分的内容,例如我这里是us-east-005。自定义节点填写Endpoint,自定义域名可以帮助我们上传成功后将Endpoint的域名替换为我们自己的域名。

配置完成就可以上传图片了。

image-20231201142431185

Cloudflare

通过Cloudflare访问Backblaze的流量是完全免费的,只不过不绑定卡的话每天只有2500次免费请求。

添加域名

如果你没有域名,可以购买一个域名,如果你已经有一个域名了,在页面左侧的website添加你的顶级域名到Cloudflare,然后在你的域名注册商将你的域名服务器修改为Cloudflare提供的服务器(一般是在域名管理中)。

image-20231201144323838

添加域名解析记录

第一个表示将二级域名image.seeyourface.cn解析到Backblaze的图床节点,第二三条表示将seeyourface.cnwww.seeyourface.cn解析到github page

右边黄色的云朵表示Cloudflare将代理你的请求,例如做一些缓存策略等等。

image-20231201144613653

开启严格的SSL加密模式

完成上面的步骤后,你可能无法访问你的图片和网站,因为图床是使用https访问的,github page如果开启了强制https访问,你可能会收到301 Moved Permanently的错误信息。

这时候需要点击左侧的SSL/TLS页面,开启严格加密模式。第三个选项表示接受自签名证书,第四个表示只接受受信任的证书。

image-20231201145728771

这时你才可以使用https://image.yourdomain.com/file/{bucketName}/default.png所示格式来访问你的图片。

这种URL会暴露我们的BucketNameCloudflare提供了URL Path的规则转换。

请求路径转换

选择左侧:Rules -> Transform Rules -> Rewrite URL -> Create Rule

自定义过滤条件:

1
(http.host eq "image.seeyourface.cn" and http.request.uri.path ne "/file/{bucketName}")

匹配成功则动态重写为:concat(“/file/{bucketName}”,http.request.uri.path)

替换为你自己的域名和bucket名称

image-20231201151642557

然后就可以通过你的域名 + 图片存储路径来访问你的图片,这样就隐藏了你的Bucket名称。

清除响应头

相同的页面选择Modify Response header页签,添加一条规则:

image-20231201153943747

再添加一条规则,让你的URL可以在外部任意访问:

image-20231201154051058

image-20231201154115816

结尾

恭喜你,你已经完成所有操作,可以愉快访问你的网站了!

参考


将白嫖进行到底——记一次网站服务迁移国外服务器流程
https://seeyourface.cn/2023/11/30/将白嫖进行到底——记一次网站服务迁移国外服务器流程/
作者
Yang Lei
发布于
2023年11月30日
许可协议