隔壁酚酞大佬向我抱怨说博客头像加载不出来,要我赶紧想想办法。具体情况如下图。
好家伙,因为日常挂代理的原因,我一直没注意到。清光缓存看了眼自己的。
得,是必须要解决的严重问题。
琢磨并测试了下,头像崩掉单纯是 Gravatar 服务在国内不好使的原因。因此只要使用国内的公共 CDN 服务,或是自己建一个,再替换掉 Typecho 程序中的原有链接,就能解决这个问题。
替换原有链接
在博客根目录/var/Typecho/Common.php
中,使用VSCODE或是其他编辑器,快捷键Ctrl+F
搜索secure.gravatar.com
。Typecho 版本不同,位置可能会不一样,我的在 991 行左右。
$url = $isSecure ? 'https://secure.gravatar.com' : 'http://www.gravatar.com';
$url .= '/avatar/';
搜索下可用的公共 CDN
把第一行里头的链接替换掉
$url = $isSecure ? 'https://sdn.geekzu.org/avatar/' : 'https://cdn.v2ex.com/gravatar/';
因为上面的 CDN 链接里已经带有/avatar/
了,所以需要注释掉这一行,也可以把这行直接删掉。
//$url .= '/avatar/';
然后保存,刷新,一切恢复正常。
但是更新 Typecho 的时候覆盖了怎么办?还有一个方法,在博客根目录程序配置文件config.inc.php
最后面插一段:
/**自定义头像源*/
define('__TYPECHO_GRAVATAR_PREFIX__', 'https://cdn.v2ex.com/gravatar/');
这个配置文件一般情况不会去动它,所以是最一劳永逸的方法,也推荐使用这个方法。
自己反代一个
直接开一个二级域名用来反代当然可以,但用二级目录(如himiku.com/avatar/
)来反代也不错。参考「Gravatar镜像资源及Nginx反代教程」的方法自己尝试了下。
在配置开头加个缓存,毕竟有缓存又快又能省钱。比如把缓存放在/home/wwwcache/gravatar
。
proxy_cache_path /home/wwwcache/gravatar levels=1:2 keys_zone=gravatar:5m inactive=30m max_size=50m;
然后在server
段里头加个反代。比如我想用https://www.himiku.com/avatar/
,来直接反代https://secure.gravatar.com/avatar/
。
location /avatar/ {
proxy_pass https://secure.gravatar.com/avatar/;
proxy_redirect off;
proxy_set_header Host secure.gravatar.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Accept-Encoding "";
proxy_cache gravatar;
proxy_cache_key $scheme$host$request_uri;
proxy_cache_valid 200 304 3h;
proxy_cache_valid 301 24h;
proxy_cache_valid 500 502 503 504 0s;
proxy_cache_valid any 3h;
}
不喜欢用avatar
,改用touxiang
也行,把第一行location /avatar/
改成location /touxiang/
就好了。
完整些的大致如下。
proxy_cache_path /home/wwwcache/gravatar levels=1:2 keys_zone=gravatar:5m inactive=30m max_size=50m;
server {
listen 80;
server_name himiku.com ;
return 301 https://himiku.com$request_uri;
}
server {
listen 443 ssl http2;
server_name himiku.com;
index index.html;
ssl........ 省略
location /avatar/ {
proxy_pass https://secure.gravatar.com/avatar/;
proxy_redirect off;
proxy_set_header Host secure.gravatar.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Accept-Encoding "";
proxy_cache gravatar;
proxy_cache_key $scheme$host$request_uri;
proxy_cache_valid 200 304 3h;
proxy_cache_valid 301 24h;
proxy_cache_valid 500 502 503 504 0s;
proxy_cache_valid any 3h;
}
…… 其他省略
}
重复上一步,把自己的链接替换进去就行了。
若是想使用我的反代服务,可以点开评论区头像自行获取链接。但是不保证长期稳定。准备停止服务啦,有看到的小伙伴们还请切换到公共cdn!
本文作者:mikusa
本文链接:https://www.himiku.com/archives/gravatar.html
版权声明:所有文章除特别声明外均系本人自主创作,转载及引用请联系作者,并注明出处(作者、原文链接等)。
谢谢^v^
本来以为头像加载不出来只是暂时的问题,想偷懒不改,没想到居然到现在都没修复...
老实来看教程改cdn了
加进配置文件里一劳永逸啦
我也被这个问题困扰了好久,后来用插件全部替换成qq头像了
那不是用的qq邮箱怎么办
那就是一只鹅
我的头像也是这样,一直无法解决,找了很多种方法,只有你的完美解决,蟹蟹大佬~
学习了,已搞定,谢谢
不错,有空试试!
好耶,白嫖的感觉真好
感谢 ٩(ˊᗜˋ*)و
感谢 用了你的 CDN
嘿嘿
我也发现头像加载不出来,但是懒得弄,说不定什么时候又好了
直接用公共服务改个链接的事,一劳永逸啊