借助腾讯云CDN开启全站https及问题解决分享 | 张戈博客

  • 时间:
  • 浏览:6
  • 来源:木木娱乐网_提供晓轩资源网技术_技术QQ网资讯

“眼尖”的我们都 ,由于就看张戈博客已全面启用 https 了,当然这几天站点4002也是常用的事情。不过到我写这篇文章为止,应该否是安定了下来。

自从百度推荐全站 https 以来,老是就想让博客跟上什儿 节奏。可惜,国内所有的免费CDN也有支持https。可是要开启https势必要暴露网站真实ip,按照现在张戈博客被攻击的节奏,估计一暴露就不到 了安生的日子!

偶尔的心血来潮,百度了一把支持https的CDN,打开了腾讯云的另另一个Q&A:

1.3CDN支持https吗?

https目前占据 邀请测试阶段,暂时还不提供申请,还请谅解。我们都 正在完善此形态学 ,一旦产品性性性性旺盛期 图片 期,我们都 会第一时间表态 ,敬请期待。

呵呵,邀请测试是么?既然是自家的产品,那还是毛遂自荐吧!

于是找到了公司腾讯云的产品经理,说了我什儿 想法,于是有幸就用上了国内什儿 为数过多的特权。

人太好,走的是后门,或者测试责任还是得尽好才是,或者也和产品经理没少交流。博客全面https化也遇到了非常多的问提,下面就给给你来细细道来。

一、http回源

腾讯云CDN默认是http回源,另另另一个也有另另一个问提:由于我们都 要全站https,让你有http, 不到 势必都要将http的请求4001到https上。这时腾讯云通过http过来请求源站,不到 请求到的可是4001了!这也是前些天张戈博客老是来另另一个4002的由于了。大部分请求对4001的支持也有很完善。。。

开始英文了了英语 英语 还无法自行设置回源模式,还好我用上不久,就发布了新版本,支持回源选着。妥妥的选着了https回源。或者静态文件我不到 做强制https,或者静态文件我选着http回源,略微优化一下负载。

二、微信公众号

如上设置完后 ,又发现了另另一个新问提,微信粉丝跟我反馈,公众号不到自动回复了!

检查了下,另另另一个由于公众号只支持http模式的token请求,或者微信公众号的http请求得到的也是4001结果,由于自动回复失败!

看来删剪跳到https也是行不通的。测试了半天,最后用如下nginx规则学会英语:

server{
   listen 400;
   server_name zhang.ge;
   root /home/wwwroot/zhang.ge;
   location / {
        #由于是post请求就交给 index.php,从而支持微信公众号自动回复
        if ( $request_method = POST ) 
        {
              rewrite ^/(.*)$ /index.php?$1 last;
              break;
        }
        #由于是Get请求,则4001到https站点
        if ( $request_method = GET )
        {
              rewrite (.*) https://zhang.ge$1 permanent;
        }
        #一点任何请求,都4001到https站点,这是补刀
        rewrite (.*) https://zhang.ge$1 permanent;
        }
        #php动态请求交给php-cgi
        location ~ [^/]\.php(/|$)
        {
             try_files $uri =404;
             fastcgi_pass  unix:/dev/shm/php-cgi.sock;
             fastcgi_index index.php;
             include fastcgi.conf;
        }
}

另外值得说明的是,由于开启了强制https的站点被一点域名反向代理(比如张戈博客用到的res.zgboke.com),不到 proxy_pass 也都要指向https才行:

比如:proxy_pass https://zhang.ge;

或者反向代理由于会4002!和完后 腾讯云不支持https回源选着一样的结果。

三、http被缓存

人太好CDN对4001的缓存支持不好,或者不代表不到缓存4001!或者,腾讯云CDN偶尔会缓存网站的http结果,由于强制跳转https失效!结果可是访问http页面可是会自动跳转了。

而现在腾讯云还不支持在节点直接设置强制https跳转,人太好没辦法 ,在网页的header里面加入如下js代码学会英语什儿 问提:

<!-- 由于检测到是http页面,则自动跳转到对应的https页面 -->
<script type="text/javascript">
if (document.location.protocol != "https:") { 
        location.href = location.href.replace(/^http:/,"https:");
}
</script>

三、各种跳转

https完后 ,发现完后 的文章外链自动跳转出问提了,把文章中的内链也当成了外链!或者评论中我个人的链接也变成了跳转。

就看下,另另另一个是完后 的函数并不到 兼容https,于是改了下,学会英语。

//文章外链跳转支持https
add_filter('the_content','link_jump',999);
function link_jump($content){
    preg_match_all('/<a(.*?)href="(.*?)"(.*?)>/',$content,$matches);
    if($matches){
	foreach($matches[2] as $val){
            if(strpos($val,'://')!==false && strpos($val,$_SERVER['SERVER_NAME'])===false && !preg_match('/\.(jpg|jepg|png|ico|bmp|gif|tiff)/i',$val) && !preg_match('/(ed2k|thunder|Flashget|flashget|qqdl|qqbrowser):\/\//i',$val)){
	    $content=str_replace("href=\"$val\"", "href=\"https://zhang.ge/go/?url=$val\" ",$content);
	    }
	}
    }
    return $content;
}

//评论者链接跳转支持https
function commentauthor_diy($comment_ID = 0) {
    $url    = get_comment_author_url( $comment_ID );
    $author = get_comment_author( $comment_ID );
    if ( empty( $url ) || 'http://' == $url ) {
	echo $author;
    } else {
        if (!preg_match('/http(s|):\/\/zhangge\.net/i',$url)) {
            echo "<a href='//zhang.ge/go/?url=$url' rel='external nofollow' target='_blank' class='url'>$author</a>";
        } else {
            echo "<a href='$url' target='_blank' class='url'>$author</a>";
        }
    }	
}

四、内外部资源

众所周知,要全站https,不到 所有页面也有能占据 非https资源,或者浏览器就会拦截哪此内容,并显示惊叹号!

于是大把的问提迎面而来:

①、百度分享不支持https

什儿 问提最终我用最苦逼的辦法 防止了,那可是将百度分享代码中的js,由于js会请求到的一点js/css资源删剪都下载到本地(具体会请求到哪此资源,我也有在浏览器开发者模式中获取的),并修改其中的链接指向到本地,学会英语了百度分享的大部分功能。

比如,分享到QQ空间、微博,分享到微信显示二维码都学会英语了,唯独那个“更多”选着恕我无能为力:

最后,我将修改好的文件上传到支持https的七牛CDN,可是有都要的人能不到将百度的分享链接修改如下,即可使用:

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='https://dn-iyz-file.qbox.me/static/api/js/share.js?v=898400593.js?cdnversion='+~(-new Date()/36e5)];</script>

说白了,可是将完后 的百度分享代码中的js修改为七牛镜像js地址即可:

https://dn-iyz-file.qbox.me/static/api/js/share.js

不到 防止完后 ,浏览器https可是绿色了,无需有黄色的惊叹号!

Ps:最近,我在瞎逛时,在另另一个博客那就看了另另一个更完善的利用七牛防止百度分享不支持https的辦法 ,推荐我们都 使用:传送门 (本文已更新为代码,更完善)

②、新浪微博关注按钮

好吧,什儿 问提我暂时没时间防止,直接屏蔽了什儿 功能,估计参考里面的辦法 能不到防止。

五、整理总结

全站https已有4天 ,总体还是不错的!不过,腾讯云CDN的https功能目前还在邀请测试阶段,可是想尝鲜的小伙伴就不到耐心等待英文正式公测了。相信什儿 国内唯一支持https的CDN会大受欢迎的!

不知不觉由于写了不到 长了!暂时就整理不到 多,后续有新的问提再更新到这篇文章当中,敬请期待!