Nginx服务流量控制详解及访问控制

本文详细介绍了Nginx的流量控制,包括限流原理、配置方法、处理突发流量及相关功能。通过limit_req_zone和limit_req指令实现限速,利用漏桶算法控制请求速率,防止DDoS攻击。同时,文章还讲解了基于IP和用户的访问控制,帮助提升服务器安全性。
摘要由CSDN通过智能技术生成

一、限流

  流量限制 (rate-limiting),是Nginx中一个非常实用,却经常被错误理解和错误配置的功能。我们可以用来限制用户在给定时间内HTTP请求的数量。请求,可以是一个简单网站首页的GET请求,也可以是登录表单的 POST 请求。
  流量限制可以用作安全目的,比如可以减慢暴力密码破解的速率。通过将传入请求的速率限制为真实用户的典型值,并标识目标URL地址(通过日志),还可以用来抵御 DDOS 攻击。更常见的情况,该功能被用来保护上游应用服务器不被同时太多用户请求所压垮。
  Nginx的”流量限制”使用漏桶算法(leaky bucket algorithm),该算法在通讯和分组交换计算机网络中广泛使用,用以处理带宽有限时的突发情况。就好比,一个桶口在倒水,桶底在漏水的水桶。如果桶口倒水的速率大于桶底的漏水速率,桶里面的水将会溢出;同样,在请求处理方面,水代表来自客户端的请求,水桶代表根据”先进先出调度算法”(FIFO)等待被处理的请求队列,桶底漏出的水代表离开缓冲区被服务器处理的请求,桶口溢出的水代表被丢弃和不被处理的请求。

二、配置

“流量限制”配置两个主要的指令,limit_req_zone和limit_req。
10.8.161.34:代理机服务器 10.8.161.112:网页服务器

代理服务器操作:

[root@cheng ~]# vim /etc/nginx/conf.d/default.conf 
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
upstream myweb {
   
        server 10.8.161.112:80;
        }
server {
   
        listen 80;
        server_name localhost;

        location /login {
   
         limit_req zone=mylimit burst=2; #burst定义区域容量大小,详见处理突发
limit_req_log_level warn;		#可无,日志级别,详见相关功能之日志
         limit_req_status 403;		#可无,指定返回错误代码,详见下
         proxy_pass http:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值