nginx限速模块
Nginx v1.1.8版本之前
修改Nginx配置文件
http {
limit_zone one $binary_remote_addr 10m;
server {
location /download/ {
limit_conn one 1;
limit_rate 300k;
}
}
}
新版本
但是v1.1.8版本之后再这么配置的话会报错
unknown directive “limit_zone” in /etc/nginx/nginx.conf:34
新配置文件
http {
limit_conn_zone $binary_remote_addr zone=one:10m; #容器共使用10M的内存来对于IP传输开销
server {
location /download/ {
limit_conn one 4; #限制每个IP只能发起四个并发连接
limit_rate 800k; #对每个连接限速300k。
}
}
}
注意
# 注意,这里是对连接限速,而不是对IP限速。
# 如果一个IP允许四个并发连接,那么这个IP就是限速limit_rate×4。
# 定义一个叫“one”的记录区,总容量为 10M,以变量 $binary_remote_addr 作为会话的判断基准。(即一个地址一个会话)。
# 您可以注意到了,在这里使用的是 binary_remote_addr 而不是 remote_addr。
# remote_addr 的长度为 7 至 15 bytes,会话信息的长度为 32 或 64 bytes。而binary_remote_addr 的长度为 4 bytes,会话信息的长度为 32 bytes。
# 当区的大小为 1M 的时候,大约可以记录 32000 个会话信息(一个会话占用 32 bytes)。