gravatar 国内镜像搭建

前言

wordpress的头像默认使用的gravatar服务, 但是其地址source.gravatar.com在国内完全无法访问.

所以想着自己搭建一个镜像, 可以查看下方的搭建过程

搭建

看网上很多教程, 说的都是通过某某云服务商的cdn服务来进行代理, 但是我试了很久也没有成功. 原因很简单, 域名被国内屏蔽了, cdn 也是在国内访问访问的, 所以拉不到数据也正常.

也就是说, 归根结底是屏蔽的原因, 如果能够绕过屏蔽, 那么就可以成功了. 百思不得其解. 直到有一天, 我在阿里云的oss后台看到了这个:

image-20210706225142154

这不就是我想要的功能么? 我的思路是这样的:

  1. oss放到香港
  2. 通过oss代理secure.gravatar.com
  3. 通过cdn代理oss进行加速

按照这个思路, 访问secure.gravatar.com的地址在香港, 想必是可以访问到的. 说干就干. 以下平台基于阿里云.

创建Bucket

image-20210706225538635

注意, 地域要选择在香港.

配置镜像回源

image-20210706225649777

image-20210706225751504

注意, 携带请求参数要选中.

测试回源配置

访问一个默认头像:

https://hujingnb-gravatar.oss-cn-hongkong.aliyuncs.com/avatar/9b59d04405217fb93755abf434aa9c1e?s=64&d=mm&f=y&r=g

请将其中的Bucket名称更换为你自己的. 成功访问后, 你会在文件管理中看到刚刚请求的文件已经保存了.

image-20210706225959501

到这一步, 说明oss配置已经 OK 了.

如果你不需要配置 cdn, 那么, 到这一步其实已经可以使用了. 不过香港服务器在内地访问速度上还是不太理想, 建议配一下cdn加速访问

配置cdn

添加cdn域名. 链接: https://cdn.console.aliyun.com/domain/list

image-20210706230143189
image-20210706230249792

注意, 需要使用备案过的域名才可以. 然后选择源站信息, 这里代理我们刚刚创建的oss即可.

image-20210706230448354

创建域名解析

image-20210706230715889

这里提示需要进行域名解析. 到域名服务商配置一下就行. 域名配置要等一会

image-20210708003802151

直到上图的状态CNAME都 OK 了. 就可以进行下一步了.

image-20210708003840327

启用 HTTPS

点击cdn域名的管理, 配置 HTTPS. 使用服务商提供的免费证书即可.

image-20210706231352365
image-20210706231414840

OK. 到这一步, 就已经可以通过cdn来访问Gravatar的头像. 为了防止之前的链接缓存问题, 来个不一样的头像试一下: 记得将其中的域名改成你自己的.

https://*.hujingnb.com/avatar/6d42d2d850afb2b15f51156f37c16f41?s=64&d=identicon&f=y&r=g

如果访问成功, 说明你已经成功了. 再次回到oss文件管理, 发现刚刚访问的文件已经下载了.

到这里, 你的gravatar代理已经可以投入使用了.

配置头像过期

这里需要配置两个过期, 如果文件一直不过期, 那么用户头像更新之后也拿不到最新的头像.

1.配置 cdn 过期

cdn会将访问的文件缓存在各地节点, 所以需要配置一下过期时间.

image-20210706233330809

2.配置 oss 过期

即使cdn文件过期了, 如果oss中文件还在, 会直接从oss中获取, 仍然拿不到最新的头像.

oss中, 可以配置文件的生命周期, 指定时间之后, 自动将文件删除.

image-20210706233533018

比如, 可以配置一天后自动将文件删除.

image-20210706233700335

结束

如果你到了这里, 应该已经配好了吧. 愉快的使用自己的镜像吧. 对了, 你可以将oss的访问权限改为私有, 然后在cdn授权一下私有Bucket的可读权限即可.

image-20210706234037899

问题

最后, 说一下这样配置的问题. 因为文件存储到了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来进行反向代理, 不存在文件缓存的问题.

订阅评论
提醒
guest
2 评论
最新
最旧
内联反馈
查看所有评论
2
0
希望看到您的想法,请发表评论。x