logo头像

aferica

使用CloudFlare为自己的网站保驾护航

本文于1622天之前发表,文中内容可能已经过时。

前言

作为一位程序员,尤其是一位前端程序员,拥有一个自己的网站或者博客是很平常的一件事。无论作为自己的自由地,肆意发挥和实现自己的创意或者想法,还是作为展示自己的窗口,都很不错。
作为一个私人网站,我们不可能,也没有时间去注意网络安全,但是,一旦发生,后果有可能十分严重。
另外,大多数人应该都只有一个域名或者一个自己的服务器,有些内容是自己想要展示的,另外一些又是自己想要隐藏的,防止有心之人通过展示的部分获取到服务器地址,从而给自己造成一些麻烦也是很有必要的,这就需要推荐这篇博客的主角————CloudFlare。

友情提示(重要)

由于CloudFlare是一家国外的云服务提供商,在国内访问速度受到比较明显的影响,因此,如果你觉得速度大于安全的话,并不推荐你使用。

简介

20190730154814.png
Cloudflare以向客户提供网站安全管理、性能优化及相关的技术支持为主要业务,帮助网站阻止来自网络的黑客攻击、垃圾邮件等,并提升网页的浏览速度。
官网:https://www.cloudflare.com/

使用教程

1. 注册/登录

这个就不多描述了

2. 添加自己的域名

点击右上角”Add site”,添加域名
20190801111250.png
点击Next,Cloudflare会自动查找该域名下的DNS记录并导入
20190801111330.png
选择套餐,免费版就可以了(当然,如果你是土豪,任意就好),点击Confirm plan确认
20190801111524.png
弹框点击Confirm确认
20190801111634.png
点击Continue继续
20190801111827.png
关键步骤:更改自己域名的DNS解析地址,点击Continue继续(可稍后在改,直接继续)
20190801112006.png
进入控制台主页

3. 配置

3.1 等待DNS解析地址更新

当出现下图中的Complete your nameserver setup提示,代表DNS解析地址未设置成Cloudflare地址,或未更新
20190801112259.png
在上面更改DNS解析地址后,点击Re-check now重新检查状态
返回主页
20190801112650.png
Active代表DNS解析地址更新成功,可以使用
Pending Nameserver Update代表DNS解析地址未更新,暂不可用

3.2 DNS解析配置

点击上方第三个DNS菜单,进入DNS解析配置页面
20190801112910.png
点击Add Record可以添加记录
20190801113025.png代表使用Cloudflare的功能,如防攻击,https等
20190801113110.png代表不使用,仅仅只作为DNS解析服务器

3.3 Https加密

点击上方第三个Crypto菜单
20190801113334.png

3.3.1 SSL

如上图,可选四种模式,分别含义
Off:不使用加密连接
Flexible:您的网站访问者和Cloudflare之间有加密连接,但是从Cloudflare到您的服务器没有加密。即半程加密。优点在于:你的网站不需要SSL证书,用户也能实现SSL加密访问。
Full:全程加密,即从你的网站到CDN服务器再到用户,全程都是SSL加密的。优点在于:只要你的服务器有SSL证书(不管是自签名证书还是购买的SSL),就可以实现SSL加密访问。
Full(strict):全程加密,它与Full SSL的区别在于你的服务器必须是安装了那些已经受信任的SSL证书(即购买的SSL证书),否则无法开启SSL加密访问。

3.3.2 Origin Certificates

20190801151258.png
由于使用Full或者Full(strict)都需要在服务器安装证书,如果你有多个子域名,并且都想使用https,那么这项功能对你来说十分方便
如上图示例,我添加了7个子域名(可以共用一个证书),有效期15年(完全不用考虑过期问题),简直不要太舒服

  1. 点击Create Certificate按钮开始创建
  2. 输入自己想要添加的域名,如果想要添加子域名,例如api,只需要输入api后点击回车即可
    20190801151909.png
  3. 选择时长(很显然,当然选择15年了)
  4. 点击Next按钮生成
  5. 生成弹框中,将Origin Certificate内容保存为xxx.pem文件,将Private key内容保存为xxx.key文件(如果没有Private key,重新生成即可)
  6. 配置Nginx
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    server {
    listen 443;
    server_name xxx.xxx; // 域名或者子域名

    ssl on;
    ssl_certificate xxx.pem; // 上保存的.pem文件的全路径
    ssl_certificate_key xxx.key; // 上保存的.key文件的全路径
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    #按照这个套件配置
    ssl_prefer_server_ciphers on;

    client_max_body_size 20m;

    // 网页路径配置
    }

3.3.3 Always Use HTTPS

自动将Http请求重定向为Https,默认关闭

3.3.4 Automatic HTTPS Rewrites

会将网站使用http请求的数据如cdn,js文件等使用https请求,默认关闭

3.4 配置过程中遇到问题

在配置时,由于生效需要一定时间(官方说是24小时),所以如果出现浏览器找到地址,或者ERR_SSL_PROTOCOL_ERROR错误,以及一些莫名其妙的问题,请等待

测试对速度的影响

开篇就提到了,使用CloudFlare会对速度有些影响,具体测试:
不使用(3.2中配置):平均速度16ms
20190801153603.png
使用后(3.2中配置):平均速度177ms
20190801153811.png
影响速度比较明显,所以具体是否使用,请结合自身实际

微信打赏

你的赞赏是对我最大的鼓励