007 Nginx限制访问频率

本文介绍了如何利用Nginx的ngx_http_limit_conn_module和ngx_http_limit_req_module模块来防御CC攻击和限制爬虫。通过设置访问频率限制,如每秒最多5次请求,可以有效保护服务器免受过度访问。配置包括限制单个IP地址的连接数和请求速率,并提供了示例配置文件,帮助读者理解和应用这些防护措施。
摘要由CSDN通过智能技术生成

nginx对于预防一些攻击也是很有效的,例如CC攻击,爬虫,本文将介绍限制这些攻击的方法,可以使用nginx的ngx_http_limit_conn_module、ngx_http_limit_req_module这两个模块达到目的,该模块为nginx内置模块,yum安装即有(001.1文档),无需编译安装。本文就介绍nginx这两个模块的使用和细节,希望能够对需要的小伙伴有所帮助。

这里是使用limit_req_zone模块进行频率限制

红色字体是限制访问频率的配置(完整配置见案例文件)

#user  nobody;
worker_processes  1;

worker_rlimit_nofile 1024;
events {
    use epoll;
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    ##配置访问频率限制,访问频率超出预设值则返回503,50m是记录访问次数的session大小
    limit_conn_log_level error;
    limit_conn_status 503;
    limit_conn_zone $binary_remote_addr zone=one:50m;
    limit_conn_zone $server_name zone=perserver:50m;
    ##单个IP每秒最多5次访问,压力测试会稳定在5.0QPS(刚开始可能会有波动)
    limit_req_zone $binary_remote_addr zone=allips:50m   rate=5r/s;  
	 
	upstream tomcat {
        server 192.168.92.40:8080;
        keepalive 32;
    }  
	
    server {
        listen 80;
		
        #引用单个IP每秒最多5次访问,超出的丢入缓冲区burst。
        #缓冲区burst里的请求数不超过10000,就不会返回503,会以每秒5个的速度执行。
        limit_req   zone=allips  burst=10000;
		
        ##管理后台禁止访问
        location ^~ /admin/ {
           deny all;
        }

        location / {
           proxy_pass http://tomcat/;
        }
    }
	
}

 

您可以使用Nginx的模块来限制同一IP的访问频率。其中一个常用的模块是ngx_http_limit_req_module,它可以帮助您实现这个目标。 要使用该模块,请按照以下步骤进行操作: 1. 打开您的Nginx配置文件,通常位于 `/etc/nginx/nginx.conf` 或 `/etc/nginx/conf.d/default.conf`。 2. 在适当的位置(例如 `http` 块内),添加以下配置: ``` http { # 设置限制频率的zone limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; # 设置限制频率的规则 server { location / { # 使用之前定义的zone进行限制 limit_req zone=one burst=5; # 其他配置项... } } # 其他配置项... } ``` 在上述配置中,`limit_req_zone` 定义了一个名为 `one` 的zone,使用 `$binary_remote_addr` 来标识每个IP地址。`10m` 是用于存储限制信息的内存大小,您可以根据实际情况进行调整。`rate=1r/s` 表示每秒允许一个请求。 在 `server` 块内的 `location` 配置中,使用 `limit_req zone=one burst=5` 来应用限制规则。`burst` 参数表示在超过限制频率时允许的突发请求数量。 3. 保存配置文件并重新加载Nginx,以使更改生效。您可以使用以下命令重新加载Nginx: ``` sudo systemctl reload nginx ``` 这样,Nginx就会根据配置限制同一IP的访问频率。当超过设定的限制时,Nginx会返回一个503错误给客户端。 请注意,您可以根据需要调整 `limit_req_zone` 和 `limit_req` 的参数,以满足您的具体需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值