更改Cloudflare SSL设置导致对Typecho的一系列善后
一直用Cloudflare作为我这个域名的DNS和CDN。一来,我的服务器在德国,不能备案。所以虽然可以用国内的域名解析,但不能用国内的CDN,访问速度必然会是一个问题;二来,Cloudflare的CDN是免费的。免费的东西谁不喜欢
因为本身我这个博客也申请过ssl证书,而Cloudflare之前的ssl设置也一直使用的Full(strict),然后从CDN到我这博客的后台都做了强制的https跳转。一直用的也好好的。直到昨天…
不知道脑子哪根筋抽了,想把我的子域名都做上CDN。但Cloudflare的Full模式要求域名要有证书,也要有Cloudflare的证书。
Cf的证书好说,免费申请一个就可以随便用,只要主域名是一个就行;但我自己的证书不行啊,只授权到了www这个下面。所以如果这样的话,就不得不再申请几个证书来用。太麻烦了…就不如把Cf的SSL降到Flexible来用来得快。
Cf的SSL等级有4个:Off、Flexible、Full和Full(Strict)。区别看图
然后,满心欢喜的把我的很多二级域名都打开了CDN。再来ping一下:
完美。ping到的ip已经是Cf的CDN地址了。加速的同时,我的真实ip也已经被隐藏了。其实本身我的真实ip也是禁ping的…所以就算知道了,如果想用ping来验证大概也是不可能的
但随之而来的就是对这个正经的HTTPS站点一些坑爹的善后了…
一、重定向次数过多
一开始没发现这个问题,直到在满意的离开我那些带有小绿锁的二级域名站,转到www下面时…
打开控制台看跳转(用到了Firefox。因为火狐不会提示这个错误而是会一直跟着跳转走,直到内存耗尽),发现访问地址不断的在http和https之间来回跳跃。
仔细阅读SSL的帮助,发现对Flexible的解释中提到了一点:
Note: You may encounter a redirect loop with some origin configurations.
为什么呢?往前看一看:
Visitors will be able to access your site over HTTPS, but connections to your origin will be made over HTTP.
所以说,使用flexible时,浏览器请求HTTPS到cf,而cf则请求HTTP到我的服务器上。而对于www这个网址,我之前又配置过强制HTTPS
,也就是说,cf通过HTTP链接服务器的请求全部被跳转到了HTTPS,但cf又把它拉回了HTTP。这循环便形成了。
明白了原因,那解决就很好办了。因为我是用宝塔的,所以直接去这个网站的SSL设置,将强制HTTPS
关掉,便万事大吉了。
直到我想登录的时候…
二、登录不作用
什么现象呢?当我想登陆时,输入好用户名和密码后点击登录,页面会刷新一下,然后我填写的东西便被吞噬了。
仿佛无事发生。
可还行
这我可是真的没头绪了…毕竟在Full模式时候都没出现过这种问题,怎么等级松下来了,反而登录不了了…
直到搜到了这个博客的文章,提到了个解决方案,就是在config.ini.php
下加入一行:
/** 开启HTTPS */
define('__TYPECHO_SECURE__',true);
虽然这个博主的问题是评论不可用,我这是登录不可用,但都是不可用,所以就死马当活驴医,试试吧。
然后…就可以了…
我所有二级域名都可以愉快的使用CDN和HTTPS了。