在nginx中实现单位时间内限制访问频率的教程_nginx

首先说一下遇到这个问题是因为网站被攻击,阿里云报警,想到要限制一下访问频率,而不是限制ip(限制ip的方案稍后给出)。nginx连接资源被吃空返回状态码是502,添加本方案限制后返回599,与正常状态码区别开。
步骤如下:

首先nginx.conf里面添加如下内容:

map $http_x_forwarded_for  $clientRealIp {
    "" $remote_addr;
    ~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr;
    }

    ###safe setting to limit the request number per second
    limit_req_status 599;
    limit_req_zone $clientRealIp zone=allips:70m rate=5r/s;

session池大小70M,如果限制的ip很多 那可以调小,如果限制的ip很少,那可访问的ip很多则要调大
每秒5个请求,这个也是根据情况调节的,5个是比较合适或者说偏大一点点的。

然后修改www.xxoo.com.conf(这是lnmp针对每个虚拟主机都有个配置文件)server里面,location上面添加如下一行:

limit_req zone=allips burst=5 nodelay;

这样重启nginx就可以写个脚本测测并发了。

如下提供一个python并发脚本:

import threading
import time,urllib2

url = 'http://sf.gg/'
def worker():
  try:
   response = urllib2.urlopen(url)
   print response.getcode()
  except urllib2.HTTPError, e:
   print e.code

for i in range(2000):
  t = threading.Thread(target=worker)
  t.start()

其中2000和http://sf.gg/都是可以修改的,然后执行 python *.py > out 就可以分析out文件里面的状态码的分布了,如果599特别多说频率限制起到作用了。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索nginx
nginx限制ip访问频率、nginx限制访问频率、nginx限制url访问频率、nginx 频率限制、nginx 限制请求频率,以便于您获取更多的相关知识。

时间: 2024-10-03 07:41:28

在nginx中实现单位时间内限制访问频率的教程_nginx的相关文章

在Nginx中增加对OAuth协议的支持的教程_nginx

我们使用Nginx的Lua中间件建立了OAuth2认证和授权层.如果你也有此打算,阅读下面的文档,实现自动化并获得收益. SeatGeek在过去几年中取得了发展,我们已经积累了不少针对各种任务的不同管理接口.我们通常为新的展示需求创建新模块,比如我们自己的博客.图表等.我们还定期开发内部工具来处理诸如部署.可视化操作及事件处理等事务.在处理这些事务中,我们使用了几个不同的接口来认证:     Github/Google Oauth     我们SeatGeek内部的用户系统     基本认证  

Nginx中虚拟主机与指定访问路径的设置方法讲解_nginx

添加多个虚拟主机 最近在ubuntu上捣腾nginx,安装成功了,就只有rewrite没有试验,因为服务器上有多个网站,还不敢在服务器上尝试,慢慢来.网上查了一些文章,下了一篇留下来做试验. nginx上虚拟主机的配置其实跟apache上的基本上类似. 需要注意的几点是: 第一.关于.htaccess配置,也就是为静态配置,在nginx上一般你要写在虚拟主机的配置文本中,但是我也有看到用包含文件解决这个问题的,即在虚拟主机配置脚本上include .htaccess文件,不过没有没有试过. 第二

Nginx为Tomcat服务器作反向代理的配置教程_nginx

web上的server都叫web server,但是大家分工也有不同的. nginx常用做静态内容服务和代理服务器(不是你FQ那个代理),直面外来请求转发给后面的应用服务(tomcat,django什么的),tomcat更多用来做做一个应用容器,让java web app跑在里面的东西,对应同级别的有jboss,jetty等东西. 但是事无绝对,nginx也可以通过模块开发来提供应用功能,tomcat也可以直接提供http服务,通常用在内网和不需要流控等小型服务的场景. apache用的越来越少

nginx中ngxtop实时监视服务器访问状态

1. 安装ngxtop 1.1 源码安装 # wget https://github.com/lebinh/ngxtop/archive/master.zip -O ngxtop-master.zip # unzip ngxtop-master.zip # cd ngxtop-master # python setup.py install ...省略.... Finished processing dependencies for ngxtop==0.0.1 //看到如上输出表示安装成功,安装

IIS中给网站添加匿名访问用户图文教程

在网上找了许久,实在是找不到一篇讲述网站匿名用户的文章,网上太多文章都是夸夸而谈,讲述诸般大道理,却完全没落到实处,与匿名用户相关的文章不少,但讲述网站匿名用户建立步骤的文章却没有. 这是一个正常的现像,懂的人觉得太简单,不想敖述.不懂的人完全看不懂,看着那些高调的言谈,有如在查天书.还有一类不懂装懂的,在网站随意发布文章,留下百般漏洞. 最讨厌某些人,一知半解,经常劝别人给某个网站目录加EVERYONE权限,呵呵,真要照这帮人的说法设置,随便懂点的人轻轻松松就拿下服务器. 废话不多说,现在来看

在nginx中配置pathinfo模式支持thinkphp的URL重写_nginx

最近一个项目中使用了ThinkPHP做为开发框架,URL上我们使用了PATHINFO模式,但是Nginx默认是不支持PATHINFO的,需要进行手动配置才可以,于是我们按照了以下方法进行了Nginx的PATHINFO支持配置:修改nginx.conf,找到server中的 location ~ .php${},修改为location ~ .php {},并在其中增加以下内容: 复制代码 代码如下: set $path_info "";set $real_script_name $fas

nginx中域名、目录的301重定向配置示例_nginx

301重定向不陌生, 有时候有需求把某目录整个重定向到一个二级域名,或者不带www的顶级域名请求全部重定向到带www的二级域名.如果是Apache,需要配置.htaccess,nginx不支持,需要在配置文件里面使用rewrite指令来实现. 顶级域名重定向到www 复制代码 代码如下: server {  server_name jb51.net;  rewrite ^/(.*)$ http://www.jb51.net/$1 permanent;  } 如上配置,所以jb51.net的请求都

IIS中给网站添加匿名访问用户图文教程_win服务器

在网上找了许久,实在是找不到一篇讲述网站匿名用户的文章,网上太多文章都是夸夸而谈,讲述诸般大道理,却完全没落到实处,与匿名用户相关的文章不少,但讲述网站匿名用户建立步骤的文章却没有. 这是一个正常的现像,懂的人觉得太简单,不想敖述.不懂的人完全看不懂,看着那些高调的言谈,有如在查天书.还有一类不懂装懂的,在网站随意发布文章,留下百般漏洞. 最讨厌某些人,一知半解,经常劝别人给某个网站目录加EVERYONE权限,呵呵,真要照这帮人的说法设置,随便懂点的人轻轻松松就拿下服务器. 废话不多说,现在来看

Nginx中防止SQL注入攻击的相关配置介绍_nginx

防止sql注入最好的办法是对于提交后台的所有数据都进行过滤转义. 对于简单的情况,比如包含单引号' , 分号;, <, >, 等字符可通过rewrite直接重订向到404页面来避免. 用rewrite有个前提需要知道,一般用rewrite进行正则匹配只能匹配到网页的URI,也就是url中?前部分,?以后部分是请求参数. 问号后面的请求参数,在nginx用$query_string表 示,不能在rewrite中匹配到,需要用if判断 例如,对于参数中带有单引号的'进行匹配然后定向到错误页面, /