摘要

在服务器迁移境外之后,国内访问速度自然没有之前那么快了。既然变慢已成事实,不如搞点花活,直接接入CloudFlare得了。

正文

接入CloudFlare分为两步

  1. CloudFlare中注册站点
  2. 域名DNS修改

整个过程如下

1.) 访问CloudFlare面板,添加站点

image-20231217145632209.png

2.) 选择免费版

image-20231217145748924.png

3.) 查看并明确DNS记录,其中服务的解析地址填写自己实际的服务器ip

image-20231217150046304.png

4.) 去域名管理控制台,移除旧DNS服务器,添加新DNS服务器

image-20231217150206880.png

image-20231217150220507.png

5.) 按需配置

image-20231217150259005.png

6.) 配置并开启SSL,使用的CloudFlare颁发的证书。

因为我的根域名是有阿里云证书的,且服务器强制重写http到https,所以选择严格。

image-20231217150657785.png

但我的子域名没有证书,对于服务器来说可以通过http访问。如果我想要通过CloudFlare的https访问,只要单独配置为灵活即可。

image-20231217150801028.png

准备就绪,说是24小时,实际等待也就半个点,直接进行测试一下。

image-20231217150902656.png

由于配置了CloudFlare,会间接导致实际的用户客户端ip拿不到。但是CloudFlare考虑到了这一点,他们通过额外的两个请求头x-forwarded-forcf-connecting-ip传递过来的。

如果nginx想要获取客户端的真实ip,需效仿如下修改。

conf
http {
    ...
    server {
        ...
        # 转发真正ip
        proxy_set_header Host $host;
        # 转发CloudFlare请求头,可能为空
        proxy_set_header x-forwarded-for $http_cf_connecting_ip;
        # 转发CloudFlare请求头,可能为空
        proxy_set_header Proxy-Client-IP $http_x_forwarded_for;
        proxy_set_header WL-Proxy-Client-IP $remote_addr;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
    }
}