一、如何限流
1、Nginx限流使用的是漏桶算法,在请求处理方面,水代表来自客户端的请求,水桶代表根据”先进先出调度算法”(FIFO)等待被处理的请求队列,桶底漏出的水代表离开缓冲区被服务器处理的请求,桶口溢出的水代表被丢弃和不被处理的请求。
2、限流的基本配置
限流是通过两个主要指令:limit_req_zone
和limit_req
来实现的。
实验需要先准备两台虚拟机:一个作为代理服务器,一个作为真实服务器
代理服务器:192.168.43.210,在配置文件中
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
upstream myweb {
server 192.168.43.132: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;
}
}
在真实服务器的配置文件:
server {