基于IP的访问控制:ngx_http_access_module location /admin/ {

先禁止特定IP

deny 192.168.1.2;
# 再允许一个IP段
allow 192.168.1.0/24;
# 最后拒绝所有其他访问
deny all;

}

基于请求频率的访问控制:ngx_http_limit_req_module http {

定义共享内存区域,以客户端IP为key,限制速率为每秒1个请求

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
server {
    location /api/ {
        # 应用限制,允许最多5个请求的突发
        limit_req zone=mylimit burst=5 nodelay;
    }
}

} limit_req_zone:定义限制规则,包括基于什么变量($binary_remote_addr)、内存区域名称(mylimit)、大小(10m)和速率(1r/s)。

limit_req:在 location 中应用规则。

burst:允许的突发请求数。

nodelay:对突发请求不延迟处理。

基于并发连接数的访问控制:ngx_http_limit_conn_module http {

定义共享内存区域,以客户端IP为key

limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
    location /download/ {
        # 限制每个IP最多一个并发连接
        limit_conn addr 1;
    }
}

} limit_conn_zone:定义共享内存区域。

limit_conn:

← 返回笔记列表