使多说支持https

本文环境: vps(centos+nginx+https)

配置nginx反向代理

  1. nginx.conf中添加

    1
    2
    3
    proxy_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;
  2. 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
    25
    location ~ "^/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文件

  1. 下载多说’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
    13
    curl -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
  2. 然后将embed.js文件放在本地,并修改(备注处为增加语句)
    注意多说embed.js是压缩的,可以使用CSS-JS进行解压。

    1
    2
    3
    4
    5
    6
    7
    8
    avatarUrl: 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;
    },
  3. 然后修改本地的多说代码,将ds.src更换为本地路径,本文更换为

    1
    ds.src='/js/embed.js';

    本文使用的是反向代理的方法,也可以使用cdn的方式。详见参考

参考

2016年12月18日更新

 本站目前使用的是通过nginx反代embed.js,并对相应代码实时进行替换,替换https来源于Github@rainwsy。最终代码参见本站embed.js代码