欢迎来到 岁月小筑

Nginx在使用CDN后,仍能对真实用户IP做并发限制的方法

前言

昨天偶然尝试了一下无限F5自己的小博客,然后,然后就没有然后了。

于是我痛下决心,卸了我的Apache,装了Apache+Nginx(纯Nginx对wordpress不友好),然后痛苦的发现,不能光卸载安装网站服务器….

最后,我选择安装了Tengine+Apache(据说Tengine比Nginx的并发性能好)(逃

需求

装好以后,我发现,F5我的博客还是得死(哭)。有句古话说得好,从哪里跌倒就从哪里爬起来。于是,我决定了,从床上爬起来,从失败中爬起,开始改装。

修改

使用有效的关键词搜索,能提高效率,直接百度:Nginx CDN 并发限制,然后就找到大神的文章了233

由于使用了CDN,因此Nginx不能直接获取到客户端IP,此时使用X-Forwarded-For即可。大部分的CDN都会在请求源站的时候添加一个X-Forwarded-For头来记录客户端IP,因此,从X-Forwarded-For下手即可。

当一个 CDN 或者透明代理服务器把用户的请求转到后面服务器的时候,这个 CDN 服务器会在 Http 的头中加入一个记录

X-Forwarded-For :  用户IP, 代理服务器IP

如果中间经历了不止一个代理服务器,这个记录会是这样

X-Forwarded-For :  用户IP, 代理服务器1-IP, 代理服务器2-IP, 代理服务器3-IP, ….

可以看到经过好多层代理之后, 用户的真实IP 在第一个位置, 后面会跟一串中间代理服务器的IP地址,从这里取到用户真实的IP地址,针对这个 IP 地址做限制就可以了。

因为小站的配置不够,所以提高了点限制,加了CDN后和直接访问的效果是不一样的,经过多次修改测试后发现这个限制差不多了,大家也可以尝试去修改适合自己的。

修改nginx.conf(本站用的是Oneinstack的LNMP一键包,nginx.conf在/usr/local/nginx/conf/目录下),在

之前插入:

在vhost目录下,修改具体某个网站的conf:

好了,大功告成,最好还是修改一下,以适应自己的网站,避免蜘蛛爬取/用户刷新造成不必要的限制。

本文经过修改,转自【张戈博客】,与原文有所出入,原文地址:Nginx在CDN加速之后,获取用户真实IP做并发访问限制的方法

点赞

发表评论

电子邮件地址不会被公开。