启用全站 HTTPS 并解决多说绿锁
最近很多博客都上了HTTPS,但是CDN一直不支持,感觉UPYUN的有点慢,
突然发现现在阿里云CDN支持HTTPS了,果断配置上试试233,噫,绿锁好像挺高端的
然后我点开了一篇博文,另一个麻烦的问题来了——多说,啥都不用说了,下面贴方法=-=
到后台多说插件文件夹,打开duoshuo.class.php,搜索 embed.js
替换为 https://博客网址/多说插件文件夹路径/embed.php
在多说文件夹下新建个:embed.php,用于替换多说embed.js,源码如下:
<?php
$timeout = stream_context_create(array(
	'http' => array('timeout' => 1.0)
));  
header('Content-Type:text/javascript');
//从多说服务器获取最新的embed.js,超时则使用本地embed.js
if(($data = file_get_contents("https://static.duoshuo.com/embed.js", 0, $timeout)) == NULL) {
	echo $data = file_get_contents(dirname(__FILE__)."/embed.js");
} else  {
	//替换多说头像
	$data = str_replace("e.avatar_url","'https://www.fghrsh.net/zb_users/plugin/duoshuo/img-cache.php?src='+e.avatar_url",$data);
	$data = str_replace("nt.data.default_avatar_url","'https://www.fghrsh.net/zb_users/plugin/duoshuo/img-cache.php?src='+nt.data.default_avatar_url",$data);
	//替换多说评论输出
	$data = str_replace("s.message",'((s.message.indexOf("src=\"http:\/\/") == -1) ? s.message : ((document.location.protocol == "https:") ? s.message.replace(/src=\"http\:\/\//, "src=\"https://dsimg.fghrsh.net/proxy/") : s.message))',$data);
	//替换多说自带表情输出
	$data = str_replace("http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/","https://dsimg.fghrsh.net/proxy/img.t.sinajs.cn/t35/style/images/common/face/ext/normal/",$data);
	echo $data;
}
?>为了防止多说服务器获取超时,可以访问embed.php,把内容保存为embed.js放在多说插件文件夹
我的多说反代服务器加了防盗链,以防止被滥用浪费流量,需要使用我服务器的可以评论留言,我加上你的域名
在多说文件夹下新建个:img-cache.php,用于替换http链接为https,源码如下:
<?php
$src = $_GET['src'];
$src = preg_replace('/http:\/\/.+\.gravatar\.com/','http://cn.gravatar.com',$src);
$timeout = stream_context_create(array(
    'http' => array('timeout' => 1.0)
));
$data = file_get_contents($src, 0, $timeout);
header('Content-Type:image/png');
header("Cache-Control: max-age=2592000");
//获取图片并输出,不存在或不是图片则输出none.jpg
//你需要自行找个无头像时输出的图片,改名为none.jpg和本程序放在一起
if(imagecreatefromstring($data)) {
	echo $data;
} else {
	echo file_get_contents(dirname(__FILE__)."/none.jpg");
}
?>img-cache.php用于缓存头像图片,dsimg服务器缓存的是评论内容图片和评论框自带表情图片
nginx反代服务器架设:
    server {
        listen 443 ssl;
	server_name  dsimg.fghrsh.net;
	ssl ……
	location ~ "^/proxy/(.*)$" {
            resolver 223.5.5.5;
            proxy_pass http://$1;
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            expires 7d;
        }
    }最后,多说图片不需要每次访问都获取一次,有CDN的可以加上缓存规则(以阿里云CDN为例):
文件夹路径:/多说文件夹/embed.php 缓存时间:7天
文件夹路径:/多说文件夹/img-cache    缓存时间 :7天
域名:dsimg.fghrsh.net 文件夹路径:/ 缓存时间:3年
版权声明:
上述源码收集自互联网,各种整合By:FGHRSH
感谢 liwanglin12 提供替换多说自带表情方法=-=
我能笑你一个月