搜索
Hi~登录注册
查看: 1527|回复: 0

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

[复制链接]

1892

主题

1899

帖子

6406

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6406
发表于 2015-5-14 13:49:12 | 显示全部楼层 |阅读模式
因为国内google打不开了所以导致像国外的 Gravatar头像、Google fonts和Google ajax这些接口都不能使用了, 下文我们就一起来看解决办法.
</div><p>Gravatar头像现在大陆地区偶尔无法访问,还有各种google服务也用不了。对于&ldquo;一枚程序员&rdquo;来说是不能容忍的。<br />
于是麦葱弄了个解决之法&mdash;&mdash;使用nginx反向代理Gravatar头像、Google fonts和Google ajax。<br />
反代之前需要确定nginx已经安装了proxy_cache模块并配置好路径及参数。</p>
<p><br />
下面是麦葱在nginx.conf中配置的代码:</p>
<p><br />
http<br />
{<br />
&nbsp;&nbsp;&nbsp; #其他代码...#</p>
<p>&nbsp;&nbsp;&nbsp; proxy_connect_timeout 5;<br />
&nbsp;&nbsp;&nbsp; proxy_read_timeout 60;<br />
&nbsp;&nbsp;&nbsp; proxy_send_timeout 5;<br />
&nbsp;&nbsp;&nbsp; proxy_buffer_size 16k;<br />
&nbsp;&nbsp;&nbsp; proxy_buffers 4 64k;<br />
&nbsp;&nbsp;&nbsp; proxy_busy_buffers_size 128k;<br />
&nbsp;&nbsp;&nbsp; proxy_temp_file_write_size 128k;<br />
&nbsp;&nbsp;&nbsp; proxy_temp_path /tmp/nginx_proxy_temp 1 2;&nbsp; #临时文件目录</p>
<p>&nbsp;&nbsp;&nbsp; #其他代码...#<br />
}</p>
<p><br />
然后是单独的配置文件gravatar.conf,带#的需要你进行相应修改:</p>
<p><br />
proxy_cache_path&nbsp; /tmp/nginx_proxy_cache/gravatar levels=1:2 keys_zone=GRAVATAR:32m inactive=7d max_size=1g; #缓存路径</p>
<p>server {<br />
&nbsp;&nbsp;&nbsp; listen 80;<br />
&nbsp;&nbsp;&nbsp; server_name gravatar.yuxiaoxi.com; #绑定的域名</p>
<p>&nbsp;&nbsp;&nbsp; location&nbsp; / {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache GRAVATAR;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache_key &quot;$scheme://$host$<a href="/tags.php/request/" target="_blank">request</a>_uri&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache_valid 200 304 7d;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache_valid 301 3d;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache_valid any 10s;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_pass http://0.gravatar.com; #反代的域名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_pass_header Server;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_redirect off;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header Host 0.gravatar.com;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header X-Real-IP $remote_addr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header X-Scheme $scheme;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; location ~ /purge(/.*) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allow 127.0.0.1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; deny all;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache_purge GRAVATAR &quot;$scheme://$host$1&quot;;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; location ~* \.(ftpquota|htaccess|htpasswd|asp|aspx|jsp|asa|mdb)?$ {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; deny all;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; access_log /home/wwwroot/gravatar/log/access.log combined; #access_log end <br />
&nbsp;&nbsp;&nbsp; error_log /home/wwwroot/gravatar/log/error.log crit; #error_log end<br />
}</p>
<p>server<br />
{<br />
&nbsp;&nbsp;&nbsp; listen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 443 ssl spdy;<br />
&nbsp;&nbsp;&nbsp; server_name gravatar.yuxiaoxi.com; #绑定的域名</p>
<p>&nbsp;&nbsp;&nbsp; ssl on;<br />
&nbsp;&nbsp;&nbsp; ssl_certificate /usr/local/ssl/yuxiaoxi.crt; #ssl证书<br />
&nbsp;&nbsp;&nbsp; ssl_certificate_key /usr/local/ssl/yuxiaoxi.pem; #ssl密钥<br />
&nbsp;&nbsp;&nbsp; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;<br />
&nbsp;&nbsp;&nbsp; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384HE-RSA-AES128-GCM-SHA256HE-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-SHAHE-RSA-AES128-SHA256HE-RSA-AES128-SHAHE-DSS-AES128-SHA256HE-RSA-AES256-SHA256HE-DSS-AES256-SHAHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK';<br />
&nbsp;&nbsp;&nbsp; ssl_prefer_server_ciphers on;<br />
&nbsp;&nbsp;&nbsp; ssl_session_timeout 5m;<br />
&nbsp;&nbsp;&nbsp; ssl_session_cache shared:SSL:10m;<br />
&nbsp;&nbsp;&nbsp; ssl_trusted_certificate /usr/local/ssl/ca.crt; #CA根证书</p>
<p>&nbsp;&nbsp;&nbsp; location&nbsp; / {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache GRAVATAR;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache_key &quot;$scheme://$host$request_uri&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache_valid 200 304 7d;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache_valid 301 3d;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache_valid any 10s;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_pass http://0.gravatar.com; #反代的域名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_pass_header Server;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_redirect off;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header Host 0.gravatar.com;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header X-Real-IP $remote_addr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header X-Scheme $scheme;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; location ~ /purge(/.*) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allow 127.0.0.1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; deny all;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache_purge GRAVATAR &quot;$scheme://$host$1&quot;;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; location ~* \.(ftpquota|htaccess|htpasswd|asp|aspx|jsp|asa|mdb)?$ {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; deny all;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; access_log /home/wwwroot/gravatar/log/access_ssl.log combined; #access_log end<br />
&nbsp;&nbsp;&nbsp; error_log /home/wwwroot/gravatar/log/error_ssl.log crit; #error_log end<br />
}</p>
<p><br />
Google fonts和Google ajax配置差不多,我就不贴出来了,请在文尾查看下载链接。<br />
你也可以直接使用麦葱弄好的,支持SSL哦~:</p>
<p><br />
将www.gravatar.com,cn.gravatar.com,0.gravatar.com,1.gravatar.com,2.gravatar.com替换为gravatar.yuxiaoxi.com;<br />
将fonts.gstatic.com替换为fonts.yuxiaoxi.com;<br />
将ajax.googleapis.com替换为ajax.yuxiaoxi.com;</p>
<p><br />
BYMT主题用户修改办法:</p>
<p><br />
1、打开/wp-content/themes/BYMT/目录下的functions.php文件<br />
2、搜索bymt_get_avatar,将gravatar.duoshuo.com替换为gravatar.yuxiaoxi.com<br />
3、搜索bymt_avatar,从//获取头像及缓存开始,到//<a href="/tags.php/%B7%D6%D2%B3/" target="_blank">分页</a>功能上一行,替换为:<br />
// 通过curl获取内容<br />
function bymt_curl_contents($url){<br />
&nbsp;&nbsp;&nbsp; $ch = curl_init();<br />
&nbsp;&nbsp;&nbsp; <a href="/tags.php/curl_setopt/" target="_blank">curl_setopt</a>($ch, CURLOPT_SSL_VERIFYPEER, FALSE);<br />
&nbsp;&nbsp;&nbsp; curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);<br />
&nbsp;&nbsp;&nbsp; curl_setopt($ch, CURLOPT_URL, $url);<br />
&nbsp;&nbsp;&nbsp; $response =&nbsp; curl_exec($ch);<br />
&nbsp;&nbsp;&nbsp; curl_close($ch);</p>
<p>&nbsp;&nbsp;&nbsp; /** 请求为空 **/<br />
&nbsp;&nbsp;&nbsp; if(empty($response)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $response = '';<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; return $response;<br />
}</p>
<p>// 写文件<br />
function bymt_write_file($path, $data, $mode = 'wb') {<br />
&nbsp;&nbsp;&nbsp; if ( ! $fp = @<a href="/tags.php/fopen/" target="_blank">fopen</a>($path, $mode)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; flock($fp, LOCK_EX);<br />
&nbsp;&nbsp;&nbsp; fwrite($fp, $data);<br />
&nbsp;&nbsp;&nbsp; flock($fp, LOCK_UN);<br />
&nbsp;&nbsp;&nbsp; fclose($fp);</p>
<p>&nbsp;&nbsp;&nbsp; return true;<br />
}</p>
<p>//获取头像及缓存<br />
function bymt_avatar($email, $size='50', $time='1209600') { // 默认尺寸50px 有效期14天<br />
&nbsp;&nbsp;&nbsp; if ( !is_numeric($size) ) $size = '50';<br />
&nbsp;&nbsp;&nbsp; if ( !is_numeric($time) ) $time = '1209600';<br />
&nbsp;&nbsp;&nbsp; if(bymt_c('avatar_cache') ){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $mailhash = md5(strtolower(trim($email)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $default = urlencode(get_option('avatar_default'));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $rating = get_option('avatar_rating');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ava_path = ABSPATH . 'avatar/' . $mailhash. '-' . $size . '.jpg';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( ! file_exists($ava_path) || filesize($ava_path) &lt; 1 || (time() - filemtime($ava_path)) &gt; $time) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ava_url = 'http://gravatar.yuxiaoxi.com/avatar/'.$mailhash.'?s='.$size.'&amp;d='.$default.'&amp;r='.$rating;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $avadata = bymt_curl_contents($ava_url);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bymt_write_file($ava_path, $avadata);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ava_url = esc_url(home_url('/avatar/')) . $mailhash. '-' . $size . '.jpg';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return '&lt;img src=&quot;'.$ava_url.'&quot; alt=&quot;avatar&quot; class=&quot;avatar avatar-'.$size.' photo&quot; height=&quot;'.$size.'&quot; width=&quot;'.$size.'&quot; /&gt;';<br />
&nbsp;&nbsp;&nbsp; }else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return get_avatar( $email, $size );<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p>4、打开/wp-<a href="/tags.php/include/" target="_blank">include</a>s/script-loader.php,搜索ajax.googleapis.com替换为ajax.yuxiaoxi.com,搜索 fonts.gstatic.com替换为fonts.yuxiaoxi.com;<br />
搞定收工!
公众微信:idc5ahl
公众QQ:吾爱互联
关注公众微信,公众QQ每天领现金卡密
卡密介绍(http://www.5ahl.com/thread-2182-1-1.html
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 点我注册

快速回复 返回顶部 返回列表