使用 ngx_http_access_module 實現 IP 訪問控制。規則按聲明順序匹配,首條匹配生效。
allow IP|CIDR|all;
deny IP|CIDR|all;
location / {
deny 192.168.1.1; # 拒絕單個 IP
allow 192.168.1.0/24; # 允許該網段
allow 10.1.1.0/16; # 允許另一網段
deny all; # 拒絕其他所有
}
效果:192.168.1.1 被拒絕;192.168.1.2-254 和 10.1.1.0/16 允許;其餘拒絕。
location / {
deny all; # 第一條就拒絕所有
allow 192.168.1.0/24; # 永遠不會生效
}
與 Apache Order Allow,Deny 不同,Nginx 無全局排序概念,嚴格按配置文件順序自上而下匹配。
geo $block_ip {
default 0;
192.168.1.1 1;
10.0.0.0/8 1;
}
server {
if ($block_ip) { return 403; }
}
適合大量 IP 名單維護,配置更清晰。