赞
踩
限速(Rate Limiting): 限速允许你控制对服务器的请求速率,以防止过多的请求影响服务器性能。使用 limit_req_zone
指令定义一个共享内存区域,并在 location
块中使用 limit_req
指令来限制请求速率。
示例配置:
nginxCopy codehttp { # 基于客户机的IP地址,每秒产生一个通行证(令牌通算法) limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server { location / { # 限制请求速率,最多同时一个IP发起5次请求 limit_req zone=one burst=5; # 限制文件下载速度为10k/s limit_rate 10k; # 当文件下载速度达到100k/s时限制他 # 1m就是1M/s limit_rate_after 100k; ... } } }
在上述配置中,每秒钟只允许一个请求,并且允许突发(burst
)5个请求。这可以有效地限制请求的速率。
请求报错状态码为503
限制并发连接数(Limit Connections): 通过限制同时连接到服务器的客户端数量,可以防止服务器过载。使用 limit_conn_zone
指令定义一个共享内存区域,并在 location
块中使用 limit_conn
指令来限制并发连接数。
示例配置:
nginxCopy codehttp { # 名为addr,在内存中开辟一个10M的空间来存放用户的连接信息(基于IP) limit_conn_zone $binary_remote_addr zone=addr:10m; # 基于server(服务器域名) limit_conn_zone $server_name zone=perserver:10m; server { location / { # 限制一个IP地址只能同时发起5个并发链接 limit_conn addr 5; # 限制一个月拟主机同时只能发起100个并发连接 limit_conn perserver 100; ... } } }
限制并发连接数,报错时的状态码为503
限制请求数(Limit Requests): 通过限制在一段时间内允许的最大请求数,可以防止服务器被大量请求过载。使用 limit_req_zone
指令定义一个共享内存区域,并在 location
块中使用 limit_req
指令来限制请求数。
示例配置:
nginxCopy codehttp {
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=10r/s;
server {
location / {
limit_req zone=req_zone burst=20 nodelay;
...
}
}
}
在上述配置中,每秒钟最多允许10个请求,允许突发(burst
)20个请求,nodelay
参数表示不延迟处理请求。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。