比来我始终赞助我伴侣对一个项目网站举行二次开辟和防护,为了简略反抗一下合作敌手的 DDoS 袭击,他给网站开启了腾讯云CDN加快办事。
开启 CDN 以后,我以前给他写的 Shell 防护剧本也就宣布有效了,由于不论是失常造访仍是袭击造访,剧本拿到的 IP 都是 CDN 节点的,而我弗成能把 CDN 的节点 IP 也给禁用了,那就都不能访问了。
今朝海内曾经争相涌现了baidu云加快、腾讯云、阿里云、加快乐、360 网站卫士以及平安宝等CDN加快办事。不但可以或许无效的潜藏本人的服务器IP地点,还能很好的进攻DDos袭击和加速网站的造访速率,cdn加快关于网站来说是颇有需要的。
因而,网站的造访模式就变成:
用户浏览器 → CDN 节点 → 网站源服务器
以至是更庞杂的模式:
用户浏览器 → CDN 节点(CDN 进口、CC\DDoS 袭击流量荡涤等) → 腾讯云盾 → 源服务器
能够看到,咱们的网站旁边履历了好几层的通明加快和平安过滤, 这类情况下,咱们就不能用上面的“一般设置”。由于一般设置中基于【源 IP 的限定】的效果便是,咱们把【CDN 节点】或许【阿里云盾】给限定了,由于这里“源 IP”地点不再是实在用户的 IP,而是旁边 CDN 节点的 IP 地点。
咱们需求限定的是最前面的实在用户,而不是旁边为咱们做加快的加快服务器。
实在,当一个 CDN 或许通明代办署理服务器把用户的要求转到背面服务器的时间,这个 CDN 服务器会在 Http 的头中到场一个记载
X-Forwarded-For : 用户 IP, 代办署理服务器 IP
假如旁边履历了不止一个代办署理服务器,这个记载会是如许
X-Forwarded-For 【灯饰企业网站设置装备摆设】 : 用户 IP, 代办署理服务器 1-IP, 代办署理服务器 2-IP, 代办署理服务器 3-IP, ….
能够看到经由好多层代办署理以后, 用户的实在 IP 在第一个地位, 后面会跟一串旁边代办署理服务器的 IP 地点,从这里取到用户实在的 IP 地点,针对这个 IP 地点做限定就能了。
咱们若何经由过程PHP猎取造访用户的实在IP呢?
本日我就讲本人编写的代码发给人人,支撑cdn加快猎取用户IP,也支撑不加快猎取IP。IsCDN默许flase为不启动cdn加快猎取用户IP,true则相同。