王鲸
王鲸Blog

反向代理Gravatar

反向代理Gravatar

什么是Gravatar

Gravatar是一项可在全球范围内使用的的头像服务。只要你在Gravatar注册并上传照片,你就可以在任何支持Gravatar的站点使用,非常省事。

要想正确地配置,你只需要在管理页面(https://cn.gravatar.com/emails/)将上传的照片与你的邮箱(如没有则需要添加并验证)绑定。先点击邮箱,再点击头像,接着可以看到头像和邮箱,点击确认即可。这样,当你在支持Gravatar的评论区或是其他地方填写邮箱,你的头像一般就会显示出来。

不用担心邮箱泄漏,Gravatar传递邮箱时采用的是MD5散列运算的邮件地址。(Gravatar. Wikipedia. [2021-09-19])

什么是反向代理

反向代理在电脑网络中是代理服务器的一种。服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端。(反向代理. Wikipedia. [2021-04-16])

为什么要反向代理Gravatar

为什么要反向代理?从维基百科中的Gravatar条目可以了解到:

从2011年8月起,gravatar.com 被中国大陆部分地区屏蔽,部分中国大陆用户访问博客时头像可能无法正确显示。2014年,网站被解封,页面访问正常。约2014年11月左右,网站再次被中国大陆屏蔽,部分中国大陆用户访问博客时头像无法正确显示。现时已被封锁,方式为DNS污染。

Gravatar. Wikipedia. [2021-09-19])

这是因为这样,现在出现了各种镜像源,如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 配置反向代理

快捷配置

点击弹窗左侧栏的反向代理,点击添加反向代理

  1. 代理名称自拟
  2. 开启上面的高级功能,代理目录设为/avatar/
  3. 目标URL设为https://www.gravatar.com/avatar/发送域名保持默认,如需要填则设为www.gravatar.com
  4. (可选)开启上面的开启缓存缓存时间自定以提高访问速度
  5. 点击右下角的保存

手动配置

如果需要手动添加整个配置文件,下面的可以作为参考。

无缓存

下面的每个$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/

王鲸

文章作者

王鲸Blog

反向代理Gravatar
Gravatar是个可在全球范围内使用的头像服务,由于DNS污染,我们需要镜像,本篇文章将介绍如何设置Gravatar的反向代理。
扫描二维码继续阅读
2022-07-25