gravatar 国内镜像搭建
前言
wordpress
的头像默认使用的gravatar
服务, 但是其地址source.gravatar.com
在国内完全无法访问.
所以想着自己搭建一个镜像, 可以查看下方的搭建过程
搭建
看网上很多教程, 说的都是通过某某云服务商的cdn
服务来进行代理, 但是我试了很久也没有成功. 原因很简单, 域名被国内屏蔽了, cdn
也是在国内访问访问的, 所以拉不到数据也正常.
也就是说, 归根结底是屏蔽的原因, 如果能够绕过屏蔽, 那么就可以成功了. 百思不得其解. 直到有一天, 我在阿里云的oss
后台看到了这个:
这不就是我想要的功能么? 我的思路是这样的:
- 将
oss
放到香港 - 通过
oss
代理secure.gravatar.com
- 通过
cdn
代理oss
进行加速
按照这个思路, 访问secure.gravatar.com
的地址在香港, 想必是可以访问到的. 说干就干. 以下平台基于阿里云.
创建Bucket
![image-20210706225538635](https://oss-blog.cdn.hujingnb.com/img/20210706225538.png)
注意, 地域要选择在香港.
配置镜像回源
![image-20210706225649777](https://oss-blog.cdn.hujingnb.com/img/20210706225649.png)
注意, 携带请求参数要选中.
测试回源配置
访问一个默认头像:
https://hujingnb-gravatar.oss-cn-hongkong.aliyuncs.com/avatar/9b59d04405217fb93755abf434aa9c1e?s=64&d=mm&f=y&r=g
请将其中的Bucket
名称更换为你自己的. 成功访问后, 你会在文件管理中看到刚刚请求的文件已经保存了.
到这一步, 说明oss
配置已经 OK 了.
如果你不需要配置 cdn
, 那么, 到这一步其实已经可以使用了. 不过香港服务器在内地访问速度上还是不太理想, 建议配一下cdn
加速访问
配置cdn
添加cdn
域名. 链接: https://cdn.console.aliyun.com/domain/list
![image-20210706230143189](https://oss-blog.cdn.hujingnb.com/img/20210706230143.png)
![image-20210706230249792](https://oss-blog.cdn.hujingnb.com/img/20210708002602.png)
注意, 需要使用备案过的域名才可以. 然后选择源站信息, 这里代理我们刚刚创建的oss
即可.
![image-20210706230448354](https://oss-blog.cdn.hujingnb.com/img/20210706230448.png)
创建域名解析
![image-20210706230715889](https://oss-blog.cdn.hujingnb.com/img/20210708003721.png)
这里提示需要进行域名解析. 到域名服务商配置一下就行. 域名配置要等一会
直到上图的状态
和CNAME
都 OK 了. 就可以进行下一步了.
启用 HTTPS
点击cdn
域名的管理, 配置 HTTPS. 使用服务商提供的免费证书即可.
![image-20210706231352365](https://oss-blog.cdn.hujingnb.com/img/20210708002900.png)
![image-20210706231414840](https://oss-blog.cdn.hujingnb.com/img/20210706231414.png)
OK. 到这一步, 就已经可以通过cdn
来访问Gravatar
的头像. 为了防止之前的链接缓存问题, 来个不一样的头像试一下: 记得将其中的域名改成你自己的.
https://*.hujingnb.com/avatar/6d42d2d850afb2b15f51156f37c16f41?s=64&d=identicon&f=y&r=g
如果访问成功, 说明你已经成功了. 再次回到oss
文件管理, 发现刚刚访问的文件已经下载了.
到这里, 你的gravatar
代理已经可以投入使用了.
配置头像过期
这里需要配置两个过期, 如果文件一直不过期, 那么用户头像更新之后也拿不到最新的头像.
1.配置 cdn 过期
cdn
会将访问的文件缓存在各地节点, 所以需要配置一下过期时间.
![image-20210706233330809](https://oss-blog.cdn.hujingnb.com/img/20210708002950.png)
2.配置 oss 过期
即使cdn
文件过期了, 如果oss
中文件还在, 会直接从oss
中获取, 仍然拿不到最新的头像.
在oss
中, 可以配置文件的生命周期, 指定时间之后, 自动将文件删除.
![image-20210706233533018](https://oss-blog.cdn.hujingnb.com/img/20210706233533.png)
比如, 可以配置一天后自动将文件删除.
![image-20210706233700335](https://oss-blog.cdn.hujingnb.com/img/20210706233700.png)
结束
如果你到了这里, 应该已经配好了吧. 愉快的使用自己的镜像吧. 对了, 你可以将oss
的访问权限改为私有, 然后在cdn
授权一下私有Bucket
的可读权限即可.
![image-20210706234037899](https://oss-blog.cdn.hujingnb.com/img/20210706234037.png)
问题
最后, 说一下这样配置的问题. 因为文件存储到了oss
, 而oss
又是根据文件名进行缓存的. 当一个文件已经存在了, 就不会再次回源访问了, 所以, 你会发现以下几个头像是相同的.
https://secure.gravatar.com/avatar/9b59d04405217fb93755abf434aa9c1e?s=64&d=mm&f=y&r=g
https://secure.gravatar.com/avatar/9b59d04405217fb93755abf434aa9c1e?s=64&d=retro&f=y&r=r
https://secure.gravatar.com/avatar/9b59d04405217fb93755abf434aa9c1e?s=64&d=wavatar&f=y&r=r
https://secure.gravatar.com/avatar/9b59d04405217fb93755abf434aa9c1e?s=64&d=identicon&f=y&r=r
https://secure.gravatar.com/avatar/9b59d04405217fb93755abf434aa9c1e?s=64&f=y&r=r
当然了, 如果是自己使用, 访问头像的参数都是固定的, 自然是没有问题. 但如果要作为公共镜像的话, 不同用户访问通过不同参数访问到了同一个头像, 就不太好了.
以上, 此方法稳定且费用极低, 但是建议仅个人使用, 不建议用作公共头像.
当然, 如果不考虑费用的话, 可以买一个阿里云香港的轻量服务器, 每月24元, 就可以通过nginx
来进行反向代理, 不存在文件缓存的问题.
最后, 欢迎访问我的小破站: https://hujingnb.com/archives/564