使多说支持https
本文环境: vps(centos+nginx+https)
配置nginx反向代理
在
nginx.conf
中添加1
2
3proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=pnc:300m inactive=30d max_size=10g;
proxy_temp_path /usr/local/nginx/proxy_temp;
proxy_cache_key $host$uri$is_args$args;在
blog.mcosx.cn.conf
中添加1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25location ~ "^/proxy/(.*)$" {
valid_referers blocked *.mcosx.cn;
if ($invalid_referer) {
return 403;
}
resolver 223.5.5.5;
proxy_connect_timeout 10s;
proxy_read_timeout 10s;
proxy_pass http://$1;
proxy_redirect off;
proxy_cache pnc;
proxy_cache_valid 200 30d;
proxy_cache_lock on;
proxy_cache_lock_timeout 5s;
proxy_cache_use_stale updating error timeout invalid_header http_500 http_502;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
add_header X-Cache "$upstream_cache_status from cache.mcosx";
expires 7d;
}
修改多说embed.js文件
下载多说’embled.js’文件
写本文时(2016年1月5日 20:50:22)embed.js状态为ETag: “5648633e-f117”。1
2
3
4
5
6
7
8
9
10
11
12
13curl -I https://static.duoshuo.com/embed.js
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Tue, 05 Jan 2016 12:49:43 GMT
Content-Type: application/x-javascript; charset=utf-8
Content-Length: 61719
Last-Modified: Sun, 15 Nov 2015 10:49:34 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: "5648633e-f117"
Expires: Tue, 12 Jan 2016 12:49:43 GMT
Cache-Control: max-age=604800
Accept-Ranges: bytes然后将embed.js文件放在本地,并修改(备注处为增加语句)
注意多说embed.js是压缩的,可以使用CSS-JS进行解压。1
2
3
4
5
6
7
8avatarUrl: function(e) {
/*if (e.avatar_url) {
e.avatar_url = (document.location.protocol == "https:") ? e.avatar_url.replace(/^http\:\/\//, "https://blog.mcosx.cn/proxy/") : e.avatar_url;
} else {
rt.data.default_avatar_url = '/img/noavatar_default.png';
}*/
return e.avatar_url || rt.data.default_avatar_url;
},然后修改本地的多说代码,将ds.src更换为本地路径,本文更换为
1
ds.src='/js/embed.js';
本文使用的是反向代理的方法,也可以使用cdn的方式。详见参考
参考
- 巧用七牛HTTPS域名,无需反代让多说支持SSL和CDN加速 20151114 https://quericy.me/blog/788
- 让多说评论框完美支持HTTPS 20150707 https://hack0nair.me/2015-07-07-duoshuo-plugin-support-https-prefectly/
- 让多说评论框完美支持 HTTPS 20150927 https://imququ.com/post/duoshuo-and-https.html
2016年12月18日更新
本站目前使用的是通过nginx反代embed.js
,并对相应代码实时进行替换,替换https来源于Github@rainwsy。最终代码参见本站embed.js代码