NGINX限制允许指定IP请求
在 Nginx 里“只允许某些 IP 访问”有两种常见需求:
- 整块虚拟主机 / 整站仅允许指定 IP
- 某个 location(目录、接口)仅允许指定 IP
1、允许访问整个server,整站白名单,白名单内IP可以请求,如下:
#只有192.168.1.100和10段的能访问
server {
listen 80;
server_name example.com;
# 白名单
allow 192.168.1.100; # 单个 IP
allow 10.0.0.0/24; # 网段
deny all; # 其余全部拒绝
root /var/www/html;
}
注:先写allow,在写deny,先允许再拒绝
2、指定的接口,目录白名单,如下:
#只有192.168.1.100和203.0.113段能请求/admin接口
server {
listen 80;
server_name example.com;
location /admin/ {
allow 192.168.1.100;
allow 203.0.113.0/24;
deny all;
# 其余正常配置
proxy_pass http://backend;
}
# 其他 location 不受限制
location / {
root /var/www/html;
}
}
如果Nginx的外层还有CDN或者负载均衡,需要在server或者http块中配置获取真实IP,如下:
set_real_ip_from 100.64.0.0/10; #阿里云官方的回源地址,不是SLB的公网IP
real_ip_header X-Forwarded-For;
real_ip_recursive on;
然后再配置allow和deny即可


