使用七牛镜像功能使多说强制支持HTTPS

3月2日 · 2016年

最近把博客评论系统换成多说了。因为本站开启了fastcgi_cache缓存加速,自带的评论系统总是出毛病,不是登录不了就是串号。而换成多说后由于引用了第三方,所以这个问题就不存在了。不过这样就有个问题,由于开启了全站https,多说的头像是直接引用的第三方,像新浪微博的头像是不支持https的,这样就会导致浏览器报警,绿锁变成灰锁。其实解决办法也很简单,特别是用Nginx做服务器的,可直接利用反向代理,转换一下就可以了。不过不知道是因为多说更新了1.2版本的原因还是别的问题,我按照网上的教程配置后多说总是获取不到头像地址。而直接在浏览器输入反代后的网址又可以正确显示头像,说明服务器反代设置没有问题,问题可能出在多说插件的配置上了。等有时间了再仔细看看到底是哪里出问题了。现在倒是有了一个更方便的办法,那就是利用七牛的镜像功能。

首先说明一点,七牛现在申请https的域名是*.qnssl.com这种样子的,这样的域名是不包括在免费的10G流量里的,也就是说用1GB也要付1GB的钱。现在大概是1GB=0.4元。不过头像基本都很小,按一个头像2KB,那也是微乎其微,一年估计也用不了几块,基本就算免费使用了。毕竟方便了许多,你说呢?

下面直接进入正题:

1、创建空间

进入七牛后创建4个公开空间。然后选择“空间设置”–“基本设置”,在“镜像源”里分别输入下列4个网址:

镜像源: http://himg.bdimg.com/

镜像源: http://ds.cdncache.org/

镜像源: http://app.qlogo.cn/

镜像源: http://tp1.sinaimg.cn/

2、获取HTTPS网址

“域名设置”–“HTTPS”,然后申请一个HTTPS网址。4个别搞混了,要分清楚哪个空间是哪个站的头像,最好新建空间起空间名的时候就分清楚。

3、修改多说的 embed.js 文件。

(1)自行到 http://static.duoshuo.com/embed.js 这个网址下载,不过压缩过了,密密麻麻,眼神不好的话那可有的受了。也可利用工具格式化一下,不过也没必要。直接替换几个网址就可以了。

(2)查找 avatarUrl: function(e) ,对照替换以下的内容:

avatarUrl: function(e) {
    if (document.location.protocol == "https:") {
        if (e.avatar_url) {
            e.avatar_url = e.avatar_url.replace(/^http\:\/\//, "https://");
            e.avatar_url = e.avatar_url.replace(/himg\.bdimg\.com/, "*.qnssl.com");//镜像源是baidu的https域名
            e.avatar_url = e.avatar_url.replace(/ds\.cdncache\.org/, "*.qnssl.com");//镜像源是cdncache的https域名
            e.avatar_url = e.avatar_url.replace(/img\d+\.douban\.com/, "img2.doubanio.com");//豆瓣无需镜像
            e.avatar_url = e.avatar_url.replace(/app\.qlogo\.cn/, "*.qnssl.com");//镜像源是qlogo的https域名
            e.avatar_url = e.avatar_url.replace(/tp\d+\.sinaimg\.cn/, "*.qnssl.com");//镜像源是sina的https域名
        } else {
            rt.data.default_avatar_url = "https://***/***.jpg";//评论区默认头像的地址,请自行修改
        }
    }
    return e.avatar_url || rt.data.default_avatar_url
}

4、修改WordPress.php文件

进入多说插件文件夹,找到wordpress.php文件。搜索 <?php if( is_ssl() ){ ?> ,把下面两个 embed.js 的路径都替换成自己的网址。

5、禁止插入表情

在后台把允许插入表情的选项去掉,禁止插入表情。表情其实也可以替换,就是很麻烦而且也没有必要,所以干脆关掉算了。

这样就完工了,也算是实现了强制https。以后再完善一下,再在这里更新。此办法参考了https://quericy.me/blog/788 ,在此感谢。

0 条回应
验证码
输入运算符及数字使等式成立
{{comment.validate_num1}} = {{comment.validate_num2}}
点赞确定
退出登录?
取消 确定