接入Cloudflare分为两步
整个过程如下
1.) 访问Cloudflare面板,添加站点
2.) 选择免费版
3.) 查看并明确DNS记录,其中服务的解析地址填写自己实际的服务器ip
4.) 去域名管理控制台,移除旧DNS服务器,添加新DNS服务器
5.) 按需配置
6.) 配置并开启SSL,使用的Cloudflare颁发的证书。
因为我的根域名是有阿里云证书的,且服务器强制重写http到https,所以选择严格。
但我的子域名没有证书,对于服务器来说可以通过http访问。如果我想要通过Cloudflare的https访问,只要单独配置为灵活即可。
准备就绪,说是24小时,实际等待也就半个点,直接进行测试一下。
由于配置了Cloudflare,会间接导致实际的用户客户端ip拿不到。但是Cloudflare考虑到了这一点,他们通过额外的两个请求头
x-forwarded-for
、cf-connecting-ip
传递过来的。
如果nginx想要获取客户端的真实ip,需效仿如下修改。
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;
}
}