随便搜一下,网上搭建gravatar镜像的文章还是挺多的,基本都是基于cdn溯源来做的。当然,国内也有很多其他的镜像服务器,例如cravatar.cn loli.net等。常用额基本就是下面这几个:
V2EX | https://cdn.v2ex.com/gravatar/ |
极客族 | https://sdn.geekzu.org/avatar/ |
loli | https://gravatar.loli.net/avatar/ |
inwao | https://gravatar.inwao.com/avat |
cravatar貌似系统也在不断地更新:
Cravatar 完美兼容所有 Gravatar 头像 API 接口,同时如果你未在 Cravatar 设置头像,则会先尝试调用 Gravatar 上的头像数据,其后是 QQ 头像,最后会返回我们为你准备的一组默认头像。
特别地:我们会对所有头像进行人工审核(也包括来自 Gravatar 和 QQ 的头像),所有包含暴恐、色情、政治等违反中国法律的内容都会被屏蔽,并返回默认头像。
虽然兼容所有的api,但是并没有分级功能。
本来想免费薅羊毛弄一台甲骨文的服务器做nginx代理转发用,但是没成功,提示没有可用资源了。于是就想着用oss来做代理,这个想法其实也是由来已久,不过一直没有实施。最近弄了个nai.dog的域名,于是就在这个域名下面建了个镜像代理(不完美,这个最后说)。
测试头像:https://gravatar.nai.dog/avatar/3a78942c4ddcda86242f20abdacee082?s=50&d=mm&r=g
1.创建一个bucket(区域选择香港),设置为公共读。设置回源选项:
回源地址选择一个gravatar的服务器地址即可。需要说明的是回源参数,如果选择携带请求字符串那么会缓存指定大小的图片。我所我把这个参数给去掉了,默认缓存80*80的图片。
2.设置生命周期,选择一段时间后自动删除:
目前设置的是2天后自动删除,所以在gravatar更新头像两天之后才能刷新头像。
3.设置域名https://gravatar.nai.dog/:
4.设置ssh证书https://yundun.console.aliyun.com/?p=cas#/certExtend/free:
目前阿里云每年有20个免费证书的额度,直接申请审核(大约10分钟)通过之后即可在oss上自动部署:
现在就可以使用自建服务了:
https://gravatar.nai.dog/avatar/3a78942c4ddcda86242f20abdacee082?s=50&d=mm&r=g https://gravatar.nai.dog/avatar/1fbf51cf49f5c369ad2cd13d76c15c42?s=32&d=mm&r=g https://cravatar.cn/avatar/81b9805653d1169927583574d835691b?s=32&d=mm&r=g
已知问题:
1、标准的gravatar参数无效s=50&d=mm&r=g。oss是根据文件名缓存,所以不会带参数属性
2、返回的图片大小默认为80*80,所以需要页面设置图像大小。否则会出现问题。
替换wp默认gravatar服务器地址代码:
if ( ! function_exists( 'get_cravatar_url' ) ) { /** * 替换 Gravatar 头像为 Cravatar 头像 */ function get_cravatar_url( $url ) { $sources = array( 'www.gravatar.com', '0.gravatar.com', '1.gravatar.com', '2.gravatar.com', 'secure.gravatar.com', 'cn.gravatar.com', 'gravatar.com', ); return str_replace( $sources, 'gravatar.nai.dog', $url ); } add_filter( 'um_user_avatar_url_filter', 'get_cravatar_url', 1 ); add_filter( 'bp_gravatar_url', 'get_cravatar_url', 1 ); add_filter( 'get_avatar_url', 'get_cravatar_url', 1 ); }
实际效果:
服务器地址:
https://gravatar.nai.dog/
欢迎测试~~~
6 comments
这个开放给别人用的话,就是流量扛不住
还好,本身图片不大。oss费用相对来说也比较低。不过就算是开放了用的人应该也不多吧。
公开服务了就难说,也可能被刷。aws一个月100G,我也不敢搭这个代理
嗯嗯,看看情况吧。哈哈。不行到时候就关服务了~~~
我甲骨文也没成功。弄了aws,听说一年后重新建账号又可以用
建议加一个CDN,比OSS直接下行费用要低。