1. 首页
  2. 系统运维
  3. Linux

如何设置Nginx连接数访问显示?如何配置IP白名单?

Nginx是一款常用的高性能Web服务器和反向代理服务器,其优秀的性能和可扩展性使得它广泛应用于各种网络应用和场景中。在实际使用过程中,为了保障系统的稳定性和安全性,需要对Nginx进行一定的配置和优化。其中,限制每秒请求次数、限制每秒连接次数和下载速度限制等技术是非常重要的配置项之一,可以防止一定程度的CC攻击。

如何设置Nginx连接数访问显示?如何配置IP白名单?

要实现这个功能,这里主要用到limit_req模块和limit_conn模块。limit_req模块是一个Nginx的限制请求速率模块,可以用于控制客户端的请求速率。limit_conn模块是一个Nginx的限制连接速率模块,可以用于控制客户端的连接速率。

配置类似如下:

#  在10MB的内存中,为每个IP地址限制1次请求/秒 
http {
   limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
   server {
     location / {
       limit_req zone=one burst=5 nodelay;
     }
   }
 }

#  在10MB的内存中,为每个IP地址限制5次连接 
http {
   limit_conn_zone $binary_remote_addr zone=addr:10m;
   server {
     location / {
       limit_conn addr 5;
     }
   }
 }

这样设置现在有个问题,如果使用了cdn或者反向代理,那么就必须使用白名单来排除这些IP,不然正常访问都会收到影响。

您可以将其与地图和地理模块结合使用,创建不应用限制的 IP 白名单。当 limit_req_zone (和 limit_conn_zone)中的键为空时,不应用限制,最好避免使用“if”指令。

以下是我改进后的配置,实测有效

http {
   geo $whitelist {
        default 0;
        # CIDR in the list below are not limited
        1.2.3.0/24 1;
        127.0.0.1/32 1;
        8.8.8.8/32 1;
   }
   map $whitelist $limit {
         0     $binary_remote_addr;
         1     "";
   }
   limit_conn_zone $limit zone=addr:10m;
   limit_req_zone $limit zone=one:10m rate=1r/s;
   server {
     location / {
       limit_conn addr 5;
       limit_req zone=one burst=5 nodelay;
     }
   }
 }

配置完成,最后记得重启nginx服务。

订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code