nginx对网站限速

时间:2021-04-12 14:39:14

注意:
nginx 1.1.8 之后的版本的语法改为limit_conn_zone $binary_remote_addr zone=NAME:10m; NAME 就是 zone 的名字

限制连接数:
要限制连接,必须先有一个容器对连接进行计数,在http段加入如下代码:
"zone=" 给它一个名字,可以随便叫,这个名字要跟下面的 limit_conn 一致
$binary_remote_addr = 用二进制来储存客户端的地址,1m 可以储存 32000 个并发会话

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

接下来需要对server不同的位置(location段)进行限速,比如限制每个IP并发连接数为1,则
server {
    listen 80;
    server_name 192.168.11.128;
    root html;
    index index.html index.htm index.php;
    limit_conn addr 1;  #是限制每个IP只能发起1个连接 (addr 要跟 limit_conn_zone 的变量对应)
    limit_conn_log_level error;  # 日志错误级别
    limit_rate 100k;      #限速为 100KB/秒

注意事项:
limit_rate 100k; //是对每个连接限速100k。这里是对连接限速,而不是对IP限速!如果一个IP允许两个并发连接,那么这个IP就是限速limit_rate * 2