使用 cloudflare 后,在站上放 1.php 执行 print_r($_SERVER); 可以看到 cloudflare 产生的影响
[HTTP_CF_CONNECTING_IP] => 真实IP
[HTTP_CF_IPCOUNTRY] => US
[HTTP_CF_VISITOR] => {"scheme":"http"}
[HTTP_X_FORWARDED_FOR] => 真实IP
[REMOTE_ADDR] => 108.162.226.237(cloudflare用于缓存的服务器IP)
[HTTP_CF_CONNECTING_IP] => 真实IP
[HTTP_CF_IPCOUNTRY] => US
[HTTP_CF_VISITOR] => {"scheme":"http"}
[HTTP_X_FORWARDED_FOR] => 真实IP
[REMOTE_ADDR] => 108.162.226.237(cloudflare用于缓存的服务器IP)
可以看到,浏览器打开域名,解析到 cloudflare 的缓存服务器IP,缓存服务器再向真实网站发出请求,所以在网站上的php程序看到 来访者IP REMOTE_ADDR 是108.162.226.237。
请求:浏览器 ==> 缓存服务器 ==> 真实网站
下载:浏览器 <== 缓存服务器 <== 真实网站
缓存服务器 得到了本次 GET/POST 请求的结果htm源码,分析网页元素,如果网页里用到的静态文件在缓存服务器上,就直接让浏览器下载,如果不在缓存里,缓存服务器就向真实网站下载该文件,进行缓存,然后让浏览器下载。
造成的影响:如果网站程序里使用 REMOTE_ADDR 来取得来访者IP,进行一些业务方面的处理,那么使用cloudflare就会造成不准确了。
统计程序 Webalizer Analog Awstats 会受此影响。特别是 PPC站