启用全站 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 提供替换多说自带表情方法=-=
我能笑你一个月