nginx的流量限制和访问控制--详解并完成配置

Nginx流量限制

1.什么是流量限制

流量限制 (rate-limiting),是Nginx中一个非常实用,却经常被错误理解和错误配置的功能。我们可以用来限制用户在给定时间内HTTP请求的数量。请求,可以是一个简单网站首页的GET请求,也可以是登录表单的 POST 请求。流量限制可以用作安全目的,比如可以减慢暴力密码破解的速率。通过将传入请求的速率限制为真实用户的典型值,并标识目标URL地址(通过日志),还可以用来抵御 DDOS 攻击。更常见的情况,该功能被用来保护上游应用服务器不被同时太多用户请求所压垮。

2.Nginx如何限流

Nginx的”流量限制”使用漏桶算法(leaky bucket algorithm),该算法在通讯和分组交换计算机网络中广泛使用,用以处理带宽有限时的突发情况。就好比,一个桶口在倒水,桶底在漏水的水桶。如果桶口倒水的速率大于桶底的漏水速率,桶里面的水将会溢出;同样,在请求处理方面,水代表来自客户端的请求,水桶代表根据”先进先出调度算法”(FIFO)等待被处理的请求队列,桶底漏出的水代表离开缓冲区被服务器处理的请求,桶口溢出的水代表被丢弃和不被处理的请求。

3.配置基本的限流

流量控制配置两个主要的指令,limit_req_zone  和 limit_req,如下所示

后端服务器配置  ip:192.168.126.133

代理服务器配置   ip:192.168.126.142

[root@slave-2 ~]# vim /etc/nginx/conf.d/default.conf


limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
upstream myweb {
        server 192.168.126.133:80 weight=1 max_fails=1 fail_timeout=1;
}
server {
        listen 80;
        server_name localhost;

        location /login {
                limit_req zone=mylimit;
                proxy_pass http://myweb;
                proxy_set_header Host $host:$server_port;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
}

4.处理突发--延迟排队

4.1无延迟排队

4.2限制并发连接数量

5.配置流量控制的相关功能

5.1配置日志记录

5.2发送到客户端的错误代码

Nginx访问控制

1.nginx访问控制模块

2.基于ip的访问控制

2.1配置语法

2.2配置测试

2.3指定location拒绝所有请求

3.基于用户的信任登录

3.1配置语法

3.2配置实例

3.3建立口令文件(创建用户设置密码)

3.4访问测试

你可能感兴趣的:(nginx,java,服务器)