(特色图片来源于Gravatar主页)
什么是Gravatar
Gravatar是一项可在全球范围内使用的的头像服务。只要你在Gravatar注册并上传照片,你就可以在任何支持Gravatar的站点使用,非常省事。
要想正确地配置,你只需要在管理页面(https://cn.gravatar.com/emails/)将上传的照片与你的邮箱(如没有则需要添加并验证)绑定。先点击邮箱,再点击头像,接着可以看到头像和邮箱,点击确认即可。这样,当你在支持Gravatar的评论区或是其他地方填写邮箱,你的头像一般就会显示出来。
不用担心邮箱泄漏,Gravatar传递邮箱时采用的是MD5散列运算的邮件地址。[1]
什么是反向代理
反向代理在电脑网络中是代理服务器的一种。服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端。[2]
为什么要反向代理Gravatar
为什么要反向代理?从维基百科中的Gravatar条目可以了解到:
从2011年8月起,gravatar.com 被中国大陆部分地区屏蔽,部分中国大陆用户访问博客时头像可能无法正确显示。2014年,网站被解封,页面访问正常。约2014年11月左右,网站再次被中国大陆屏蔽,部分中国大陆用户访问博客时头像无法正确显示。现时已被封锁,方式为DNS污染。[1]
这是因为这样,现在出现了各种镜像源,如loli、v2ex,给我们带来了一定程度上的方便。我们需要这样的服务,那得找办法,而反向代理的其中一个用途正好符合我们的需求(点到为止),所以较常见的镜像方式中有反向代理。
一些Gravatar镜像源链接
公共
Loli
gravatar.loli.net/avatar/
V2EX
cdn.v2ex.com/gravatar/
极客族
sdn.geekzu.org/avatar/
自建
Blog233自建(不稳定)
gra.blog233.com/avatar/
如何自建Gravatar反向代理
我们也可以自己动手反向代理Gravatar,有些其他的用途我就不说了,但大体上就是好玩。如果你摆烂了,不想自己搞而用上面的公共镜像源,下面的不用看了。
下面的以宝塔面板为例,如使用其他的面板请自行类比。如果你习惯了直接使用命令行管理Web服务器以及使用的是Apache而不是Nginx,请自行上网查找相关资料操作。我有时间会更新Apache的反向代理。
我们需要的有:
- 一台能连得上Gravatar的服务器或家用的主机
- 域名以及DNS的管理权限
- 服务器管理面板
- Nginx
(1 建立站点)
这一步可以跳过,可以直接在已有的网站上配置反向代理,我没有试过、没有经验,不确定是否可行。
在面板中添加站点,输入域名,不用ftp和数据库,php版本选择纯静态。
2 配置反向代理
快捷配置
点击弹窗左侧栏的反向代理
,点击添加反向代理
。
代理名称
自拟- 开启上面的
高级功能
,代理目录设为/avatar/
目标URL
设为https://www.gravatar.com/avatar/
,发送域名
保持默认,如需要填则设为www.gravatar.com
- (可选)开启上面的
开启缓存
,缓存时间
自定以提高访问速度 - 点击右下角的
保存
手动配置
如果需要手动添加整个配置文件,下面的可以作为参考。
无缓存
下面的每个$static_file
的file后加了几位随机字符串(应该是为了防止重复),例如$static_fileaAbBcC
。建议套用时在$static_file
后也添加几位不易重复的字符串。
#PROXY-START/avatar/
location ^~ /avatar/
{
proxy_pass https://www.gravatar.com/avatar/;
proxy_set_header Host www.gravatar.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
set $static_file 0;
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
set $static_file 1;
expires 12h;
}
if ( $static_file = 0 )
{
add_header Cache-Control no-cache;
}
}
#PROXY-END/avatar/
有缓存
最后几行的proxy_cache_valid
后面的1m
是缓存时间,m
代表minutes(分钟),你可以自行修改。
#PROXY-START/avatar/
location ^~ /avatar/
{
proxy_pass https://www.gravatar.com/avatar/;
proxy_set_header Host www.gravatar.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
expires 12h;
}
proxy_ignore_headers Set-Cookie Cache-Control expires;
proxy_cache cache_one;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 301 302 1m;
}
#PROXY-END/avatar/