基于IP的访问控制:ngx_http_access_module location /admin/ {
deny 192.168.1.2;
# 再允许一个IP段
allow 192.168.1.0/24;
# 最后拒绝所有其他访问
deny all;
}
基于请求频率的访问控制:ngx_http_limit_req_module http {
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 {
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
location /download/ {
# 限制每个IP最多一个并发连接
limit_conn addr 1;
}
}
} limit_conn_zone:定义共享内存区域。
limit_conn: