商务通服务器版https功能免费升级

上周公司同事出差,发现深圳网络对网站劫持比较严重,重要站点都被挂上了非法的小广告,更担心的是网站挂的商务通js也有可能被劫持替换。

因公司使用的是商务通服务器版,升级还需要加钱,简单的https功能还要付费,严重的乱收费啊。我想通过nginx提供反向https代理一样可以满足此需求

经测试完全正常,现将配置公布如下,假设域名是xytong.cc

server {
        listen       443 ssl;
        server_name  www.xytong.cc;
        access_log  logs/access.log  ;
        ssl_certificate      ../ssl/www.xytong.cc/www.xytong.cc.pem;
        ssl_certificate_key  ../ssl/www.xytong.cc/www.xytong.cc.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            proxy_pass http://127.0.0.1:80;
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_set_header X-SSL on;
            proxy_hide_header Vary;
            proxy_redirect off;
            
            #规则1,url域名替换
            sub_filter  'http://www.xytong.cc' 'https://www.xytong.cc';
            
            #规则2,js变量 var logolist, 转义的url字符替换
            sub_filter  'http%3a%2f%2fwww.xytong.cc' 'https%3a%2f%2fwww.xytong.cc';

            #规则3,js文件:ChatBW2JS.aspx?jid=d ,函数SetLogo 图片url替换为https
            sub_filter  'logosrc1.replace("https://", "http://")' 'logosrc1.replace("https://", "https://")';
            sub_filter  'logosrc1 = logosrc1.toLowerCase();' 'logosrc1 = logosrc1.toLowerCase(); logosrc1 = logosrc1.replace("http://", "https://");';
            
            #所有的文件类型都替换
            sub_filter_types *;
            #满足条件的字符串都替换,而不是仅仅一次
            sub_filter_once off;
        }
    }

注意:

1.sub_filter共三种类型,共计四条规则,用途见红字备注

2.源服务器不能开启gzip,否则sub_filter规则会失效

3.将nginx与商务通部署在同一台服务器即可,即:用户至nginx使用https,nginx至商务通iis 服务使用http。

 

作者: 白金马桶

天道酬勤...

发表评论