最近,Gravatar的默认服务器被墙了,Wordpress博客上的头像全是叉叉。网上有很多的解决方案,不过我是采用Nginx反向代理并缓存Gravatar来实现头像正常显示的。如果采取这个方法,必须有一个墙外的VPS,否则没法搞。
所谓反向就是代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部(或其他)网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端。缓存就是把服务器A的资源缓存到服务器B,然后直接从服务器B读取数据。
Gravatar 头像 Nginx 反代
1、安装Nginx
你可以安装lnmp一键包:http://lnmp.org/
2、在域名管理上为域名gravatar.example.com添加A记录到VPS的IP上
3、修改nginx.conf配置文件的http层
找到nginx.conf所在位置:usr/local/nginx/conf/
vi /usr/local/nginx/conf/nginx.conf
查找 #limit_conn_zone $binary_remote_addr zone=perip:10m;
在前面加入以下内容:
client_body_buffer_size 512k; 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 /home/cache/temp; # 配置临时目录 proxy_cache_path /home/cache/path levels=1:2 keys_zone=cache:20m inactive=30d max_size=600m; #20m是内存占用,30d是30天无访问删除,600m是缓存占具硬盘空间,cache为缓存区名字.
4、创建缓存目录,并赋予权限
mkdir /home/cache/path -p mkdir /home/cache/temp chmod 755 -R /home/cache
5、新增虚拟主机配置文件
vi /usr/local/nginx/conf/vhost/gravatar.yourdomain.com.conf
完整配置:
server{ listen 80; listen 443 ssl; server{ listen 80; listen 443 ssl; ssl_certificate /usr/ssl/gravatar.inwao.com.crt; ssl_certificate_key /usr/ssl/gravatar.inwao.com.key; ssl_session_timeout 10m; ssl_protocols TLSv1.2 TLSv1.3; #ssl_stapling on; #ssl_stapling_verify on; ssl_session_tickets on; ssl_early_data on; ssl_prefer_server_ciphers on; ssl_ciphers "TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5"; ssl_session_cache builtin:1000 shared:SSL:10m; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; server_name gravatar.inwao.com; access_log /home/wwwlogs/gravatar.inwao.com.log; if ($ssl_protocol = "") { return 301 https://$host$request_uri; } if ($host != gravatar.inwao.com) { rewrite ^/(.*)$ $scheme://gravatar.inwao.com/$1 permanent; } location / { proxy_cache cache; proxy_cache_valid 200 304 7d;