解决Gravatar头像、Google fonts和Google ajax不能使用的方法

Gravatar头像现在大陆地区偶尔无法访问,还有各种google服务也用不了。对于“一枚程序员”来说是不能容忍的。
于是麦葱弄了个解决之法——使用nginx反向代理Gravatar头像、Google fonts和Google ajax。
反代之前需要确定nginx已经安装了proxy_cache模块并配置好路径及参数。

下面是麦葱在nginx.conf中配置的代码:

http
{
    #其他代码...#

    proxy_connect_timeout 5;
    proxy_read_timeout 60;
    proxy_send_timeout 5;
    proxy_buffer_size 16k;
    proxy_buffers 4 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;
    proxy_temp_path /tmp/nginx_proxy_temp 1 2;  #临时文件目录

    #其他代码...#
}

然后是单独的配置文件gravatar.conf,带#的需要你进行相应修改:

proxy_cache_path  /tmp/nginx_proxy_cache/gravatar levels=1:2 keys_zone=GRAVATAR:32m inactive=7d max_size=1g; #缓存路径

server {
    listen 80;
    server_name gravatar.yuxiaoxi.com; #绑定的域名

    location  / {
        proxy_cache GRAVATAR;
        proxy_cache_key "$scheme://$host$request_uri";
        proxy_cache_valid 200 304 7d;
        proxy_cache_valid 301 3d;
        proxy_cache_valid any 10s;

        proxy_pass http://0.gravatar.com; #反代的域名
        proxy_pass_header Server;
        proxy_redirect off;
        proxy_set_header Host 0.gravatar.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location ~ /purge(/.*) {
        allow 127.0.0.1;
        deny all;
        proxy_cache_purge GRAVATAR "$scheme://$host$1";
    }

    location ~* \.(ftpquota|htaccess|htpasswd|asp|aspx|jsp|asa|mdb)?$ {
        deny all;
    }

    access_log /home/wwwroot/gravatar/log/access.log combined; #access_log end
    error_log /home/wwwroot/gravatar/log/error.log crit; #error_log end
}

server
{
    listen       443 ssl spdy;
    server_name gravatar.yuxiaoxi.com; #绑定的域名

    ssl on;
    ssl_certificate /usr/local/ssl/yuxiaoxi.crt; #ssl证书
    ssl_certificate_key /usr/local/ssl/yuxiaoxi.pem; #ssl密钥
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK';
    ssl_prefer_server_ciphers on;
    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:10m;
    ssl_trusted_certificate /usr/local/ssl/ca.crt; #CA根证书

    location  / {
        proxy_cache GRAVATAR;
        proxy_cache_key "$scheme://$host$request_uri";
        proxy_cache_valid 200 304 7d;
        proxy_cache_valid 301 3d;
        proxy_cache_valid any 10s;

        proxy_pass http://0.gravatar.com; #反代的域名
        proxy_pass_header Server;
        proxy_redirect off;
        proxy_set_header Host 0.gravatar.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location ~ /purge(/.*) {
        allow 127.0.0.1;
        deny all;
        proxy_cache_purge GRAVATAR "$scheme://$host$1";
    }

    location ~* \.(ftpquota|htaccess|htpasswd|asp|aspx|jsp|asa|mdb)?$ {
        deny all;
    }

    access_log /home/wwwroot/gravatar/log/access_ssl.log combined; #access_log end
    error_log /home/wwwroot/gravatar/log/error_ssl.log crit; #error_log end
}

Google fonts和Google ajax配置差不多,我就不贴出来了,请在文尾查看下载链接。
你也可以直接使用麦葱弄好的,支持SSL哦~:

将www.gravatar.com,cn.gravatar.com,0.gravatar.com,1.gravatar.com,2.gravatar.com替换为gravatar.yuxiaoxi.com;
将fonts.gstatic.com替换为fonts.yuxiaoxi.com;
将ajax.googleapis.com替换为ajax.yuxiaoxi.com;

BYMT主题用户修改办法:

1、打开/wp-content/themes/BYMT/目录下的functions.php文件
2、搜索bymt_get_avatar,将gravatar.duoshuo.com替换为gravatar.yuxiaoxi.com
3、搜索bymt_avatar,从//获取头像及缓存开始,到//分页功能上一行,替换为:
// 通过curl获取内容
function bymt_curl_contents($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_URL, $url);
    $response =  curl_exec($ch);
    curl_close($ch);

    /** 请求为空 **/
    if(empty($response)){
        $response = '';
    }

    return $response;
}

// 写文件
function bymt_write_file($path, $data, $mode = 'wb') {
    if ( ! $fp = @fopen($path, $mode)) {
        return false;
    }

    flock($fp, LOCK_EX);
    fwrite($fp, $data);
    flock($fp, LOCK_UN);
    fclose($fp);

    return true;
}

//获取头像及缓存
function bymt_avatar($email, $size='50', $time='1209600') { // 默认尺寸50px 有效期14天
    if ( !is_numeric($size) ) $size = '50';
    if ( !is_numeric($time) ) $time = '1209600';
    if(bymt_c('avatar_cache') ){
        $mailhash = md5(strtolower(trim($email)));
        $default = urlencode(get_option('avatar_default'));
        $rating = get_option('avatar_rating');
        $ava_path = ABSPATH . 'avatar/' . $mailhash. '-' . $size . '.jpg';
        if ( ! file_exists($ava_path) || filesize($ava_path) < 1 || (time() - filemtime($ava_path)) > $time) {
            $ava_url = 'http://gravatar.yuxiaoxi.com/avatar/'.$mailhash.'?s='.$size.'&d='.$default.'&r='.$rating;
            $avadata = bymt_curl_contents($ava_url);
            bymt_write_file($ava_path, $avadata);
        } else {
            $ava_url = esc_url(home_url('/avatar/')) . $mailhash. '-' . $size . '.jpg';
        }
        return '<img src="'.$ava_url.'" alt="avatar" class="avatar avatar-'.$size.' photo" height="'.$size.'" width="'.$size.'" />';
    }else{
        return get_avatar( $email, $size );
    }
}

4、打开/wp-includes/script-loader.php,搜索ajax.googleapis.com替换为ajax.yuxiaoxi.com,搜索 fonts.gstatic.com替换为fonts.yuxiaoxi.com;
搞定收工!

时间: 2024-07-30 00:45:03

解决Gravatar头像、Google fonts和Google ajax不能使用的方法的相关文章

Google Fonts导致WordPress打开缓慢解决方法

Google Fonts导致WordPress 速度问题之原因 WordPress 自3.8+版本后加入了Google Fonts(别问我Google Fonts是什么了),然后捏,因为近期敏感周期(35号),天朝发威,谷歌的一系列网站被彻底墙,包括Google Fonts 所在的googleapis.com .所以,如果是在登陆状态下打开你的WordPress 站点,会非常慢,因为压根儿加载不了这个字体文件.如果是非登陆状态且你的主题不是老外的主题,一般来说都是正常的. 解决方法 出来问题就要

Disable Google Fonts Plus插件禁用谷歌开源字体库

由于Google Fonts字体库等服务在国内被禁用,许多使用Google Fonts的WordPress网站打开异常困难.今天,我们给大家带来了一款插件,Disable Google Fonts Plus,可以方便地解决这个问题. 为什么要关闭Google Fonts字体库 Google Fonts 是谷歌公司推出的一项字体库服务,主要是为了解决跨平台的字体一致性问题.WordPress 3.8版本在重新设计WordPress后台界面的时候,开始使用Google Fonts字体库. 使用Goo

下载并同步 Google Fonts 里的字体到你的电脑

原文:http://www.fonts.com/web-fonts/google Google Fonts里可以找到超多的开源字体,任何人都可以使用,而且他们都存储在Google的服务器上,随时都方便网络开发者调用.目前最热门的Open Sans居然在上周一周里就有超过20亿次的浏览量! 现在Google也提供字体下载了,儿不只是可以在线引用.利用Windows和OS X上免费的SkyFonts软件即可下载到所有的Google Fonts字体,并可自动与云端的Google Fonts同步,当Go

Z-Blog博客Gravatar头像被墙无法显示的解决办法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 Gravatar是"全球通用头像",在任何支持Gravatar的网站和博客中,填写填写申请注册Gravatar头像用的这个Email地址,你的头像就会出现在留言和评论系统中. 视觉博客的核心是基于Z-Blog博客系统的,从今年6月底视觉博客评论中的Gravatar头像便无法正常显示,取而代之的是红色的"×&quo

解决调用远程Gravatar头像图片不显示问题

第一.如果我们还需要使用Gravatar头像  代码如下 复制代码 function get_ssl_avatar($avatar) { $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://secure.gravatar.com/avatar/$1?s=$2" class="avatar avatar-$2" height="$2"

WordPress无法显示Gravatar头像被墙的四种解决方案

在当前Gravatar头像服务器被墙的情况下,要想要加快Wordpress显示Gravatar头像的速度,我们可以做那些努力呢?通常的做法大致有以下几种: 1.首先可以做的就是将Gravatar头像图片缓存到自己的虚拟主机或者VPS 上,这样用户访问的就是直接读取自己服务器的图片文件.好处是访问的本地图片,图片的加载非常快!缺点也是显而易见的:运行一段时间后,大量的 Gravatar头像图片会占用非常多的空间,过多的图片导致服务器压力骤增. 2.安装插件:插件有二大类,一类是wordpress评

Google和Baidu降权处理及应对方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 最近多数人在SEO咨询中问到同一个问题,为何网站收录减少,以前有排名的关键词都不在上面了,网站是不是被降权了,网站降权怎么去解决等等,为此下面介绍一下百度和google对于降权的不同处理及应对: 百度降权的主要表现方式是:收录大规模减少,排名迅速下降,时常伴随着首页被K.google降权的主要表现方式是:网站排名降低,收录停滞,偶尔伴随着一些

对症下药分清google降权和Google沙盒的异同

Google的沙盒效应(Sandbox Effect) 所谓沙盒效应指的是,新的网站在Google里面很难得到好的排名,无论你怎么优化这个网站.换句话说,一个新的网站,可以有很丰富的相关的内容,可以有大量的高质量的链接,网站既搜索引擎友好,也用户友好,所有一切都优化的很好.但是在一段时间之内,就是很难在Google里面得到好的排名. Google的Sandbox有点像给予新网站的一个试用期.在这段试用期内,新网站几乎无法在竞争比较激烈的关键词下得到好的排名. 这个现象最早是在2004年3月开始被

wordpress禁止没有Gravatar头像的访客提交评论

1 为何限制没有Gravatar头像的访客 前几天博主就一直在想着是否要限制没有gravatar头像的用户在博客留言,主要原因有三点: 1.博客使用的是wordpress程序,而Gravatar早在07年就被Automattic公司收购并在wp程序上发扬光大.所以,wp博客和gravatar头像天生就是一对,当然要让他们在一起了. 2.屏蔽广告.很多spamer都是没有gravatar头像的,限制没有gravatar头像的访客就等于过滤掉了相当一部分的垃圾广告.扯远一点,多说插件为众多广告商做出