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