目录
前言
Gravatar 使用
思路
操作
步骤一:注册或登录华为云
步骤二:创建委托账号
步骤三:创建OBS桶
步骤四:数据回源配置
步骤五:配置生命周期规则
步骤六:绑定自定义域名
步骤七:配置防盗链
其他平台
前言
Gravatar是Globally Recognized Avatar的缩写,是gravatar推出的一项服务,意为“全球通用头像”。如果在Gravatar的服务器上放置了你自己的头像,那么在任何支持Gravatar的blog或者留言本上留言时,只要提供你与这个头像关联的email地址,就能够显示出你的Gravatar头像来。WordPress的头像默认使用的就是Gravatar服务,但是其地址在国内访问比较慢或者干脆无法访问,由此就出现了很多Gravatar镜像站。但这些镜像站由于使用的人太多,时不时的就会出现无法访问甚至跑路的情况。所以干脆就自己搭建一个镜像站。
Gravatar 使用
因为网络环境原因,Gravatar 官方提供的服务在国内访问时体验较差,时常存在无法访问的情况,所以推荐使用国内的镜像服务。
下面列出国内一些常用的 Gravatar 镜像源:
Gravatar 官方的 secure 源:https://secure.gravatar.com/avatar/
Gravatar 官方的 cn 源:https://cn.gravatar.com/avatar/
Gravatar 官方的 www 源:https://www.gravatar.com/avatar/
V2EX:https://cdn.v2ex.com/gravatar/
极客族:https://sdn.geekzu.org/avatar/
loli:https://gravatar.loli.net/avatar/
思路
利用华为云OBS(对象存储)的数据回源功能,将Gravatar源站的图片缓存到OBS当中,然后给OBS绑定自定义域名,在WordPress中将头像服务器的地址修改为自定义的域名就可以了。
操作
步骤一:注册或登录华为云
1.1 注册或者登录华为云平台,进入到控制台。
步骤二:创建委托账号
2.1 在控制台左侧服务列表中,搜索IAM,进入到“统一身份认证服务 IAM”。
2.2 点击“委托”-->“创建委托”。
2.3 按照下图所示,填写以下内容,然后点击“下一步”。
2.4 选择策略,按照下图所示选择,然后点击“下一步”。
2.5 在“设置最小授权范围”保持默认,然后点击“确定”。
2.6 在弹出的窗口中点击“知道了”。
2.7 点击“完成”完成委托账号的创建。
步骤三:创建OBS桶
3.1 回到控制台,在控制台左侧服务列表中,搜索OBS,进入到“对象存储服务 OBS”。
3.2 在对象存储服务控制台,点击“创建桶”。
3.3 按照下图填写相关信息,然后点击“立即创建”。
这里为什么不能选择中国大陆区域?
答:其实可以选择中国大陆的区域,但是Gravatar源站在境外,国内访问可能会由于防火墙等原因导致无法访问,所以这里选择非中国大陆地区比较稳妥。
3.4 在弹出的窗口中点击“确定”。
3.5 完成OBS桶的创建。
步骤四:数据回源配置
4.1 点击桶名称,进入到OBS桶的配置。
4.2 点击“数据回源”然后再点击“创建”。
4.3 创建数据回源规则,按照图片填写相关内容,其他的保持为空或者默认,然后点击“确定”。
4.4 数据回源配置完成。
步骤五:配置生命周期规则
OBS中只要存在数据就不会回源,但是用户可能会不定期的更新头像,因此需要让缓存到OBS中的数据定期删除,通过OBS的生命周期规则即可实现。
5.1 点击“基础配置”-->“生命周期规则”,然后点击创建。
5.2 创建生命周期规则,按照下图填写。
对象过期删除天数填写为1天,代表每过一天就删除之前一天的数据,可以根据需求自行决定填写数字,然后点击“确定”。
5.3 完成生命周期规则创建。
步骤六:绑定自定义域名
6.1 点击“域名管理”-->“配置自动逸域名”。
6.2 输入自己的二级域名,然后点击“确定”。
6.3 复制CNAME名称,然后到域名解析商处完成域名解析,解析完成后点击“我已了解”。
步骤七:配置防盗链
通过防盗链可以禁止其他网站盗用链接,避免增加OBS使用成本,如果公开给其他人使用,可以选择不设置防盗链。
7.1 点击“访问权限控制”-->“防盗链”。
在白名单Referer,处填写自己网站的域名,可以防止其他人使用,也可以在黑名单Referer处填写,禁止特定某些网站访问。
其他平台
阿里云的OSS(对象存储)也具有相同的功能,具体操作可以参考阿里云的产品文档。
其他云没有尝试过,可以自行查看相关的产品文档看看。
java实现代码
package com.jgravatar;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Util {
public static String hex(byte[] array) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length; ++i) {
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(
1, 3));
}
return sb.toString();
}
public static String md5Hex(String message) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
return hex(md.digest(message.getBytes("CP1252")));
} catch (NoSuchAlgorithmException e) {
} catch (UnsupportedEncodingException e) {
}
return null;
}
public static void main(String[] args) {
String email = "12";
String hash = MD5Util.md5Hex(email);
System.out.println(hash + " " + email.hashCode());
}
}