运维
2019年8月27日

Cloudflare配置SSL服务和缓存清理的相关问题

Cloudflare提供的服务

Cloudflare (CF) 提供了免费的CDN服务,也就是将你网站的内容缓存到CF的分布式服务器中,当你访问自己的域名时,其实是访问CF的服务器,类似于一个反向代理服务器。

所以,配置网站的https服务需要配置两段访问,即:浏览器对CF服务器的访问,CF对网站本来服务器的访问。

服务器端SSL配置

服务器端我一开始使用了acme.sh来申请SSL证书,并且在nginx中设置强制访问https。

server {
   listen  80;
   server_name blog.euruson.com;
   rewrite ^(.*) https://$server_name$1 permanent; #http 跳转 https
}

但是设置完成后访问网站,提示重定向次数太多。其实这是因为Cloudflare端的SSL配置出现了错误。

Cloudflare端SSL配置

Cloudflare SSL 管理都在控制台 - Crypto 处,SSL选项中一共有4个选项:Off,Flexible,Full,Full(strict)。这四个选项的说明在Help中写得还是蛮详细的。

  • Off:禁止访客通过HTTPS 访问你的网站,HTTPS会被重定向到HTTP。
  • Flexible:访客访问CF服务器时使用HTTPS,CF服务器从网站本来服务器拉取内容时通过HTTP访问。
  • Full:访客访问CF服务器时使用HTTPS,CF服务器从网站本来服务器拉取内容时通过HTTPS访问,但是不会检验证书是否有效(比如说过期证书,自签名证书,或者干脆没有证书只提供HTTPS服务)。
  • Full(strict):访客访问CF服务器时使用HTTPS,CF服务器从网站本来服务器拉取内容时通过HTTPS访问,证书必须使用有效的可信任证书。

Cloudflare的初始SSL设置是Flexible,也就是说CF的服务器一直在通过HTTP访问网站本来的服务器,所以出现了无限301跳转。那么我们将SSL设置为Full或者Full(strict)即可解决问题。

相信大家也发现了,最终出现在浏览器中的证书其实是Cloudflare的证书,也就是说我们配置在服务器端的SSL证书并没有什么太大的用处,而且我们自己还要定时续签。所以之后我直接使用了Cloudflare颁发的Origin Certificates证书,证书有效期有15年之久,但是这个证书只对网站服务器和CF服务器之间的加密有效,然而这并不影响网站的访问。

Cloudflare缓存清理

使用Cloudflare时,在对网站进行更新后,无论如何刷新网站都显示不出新的效果,这是因为Cloudflare的缓存导致的。暂时还不太清楚Cloudflare的缓存机制,但是在Cloudflare的控制台可以清除缓存。同时还有开发模式,能够实时观察变化。


参考:

  1. 如何正确启用 Cloudflare SSL

  2. 使用 Cloudflare CDN加速 网站调试 页面效果 不能及时更新 解决方法

Powered by Mume. Copyright © 2019-2024.

Euruson. All rights reserved.