Skip to content

访问控制

访问控制可以限制特定IP或IP段访问网站,提高安全性。

基本配置

允许特定IP

nginx
location /admin/ {
    allow 192.168.1.100;
    deny all;
}

拒绝特定IP

nginx
location /admin/ {
    deny 192.168.1.100;
    allow all;
}

IP段控制

允许IP段

nginx
location /admin/ {
    allow 192.168.1.0/24;
    deny all;
}

拒绝IP段

nginx
location /admin/ {
    deny 192.168.1.0/24;
    allow all;
}

多IP控制

允许多个IP

nginx
location /admin/ {
    allow 192.168.1.100;
    allow 192.168.1.101;
    allow 192.168.1.102;
    deny all;
}

拒绝多个IP

nginx
location /admin/ {
    deny 192.168.1.100;
    deny 192.168.1.101;
    deny 192.168.1.102;
    allow all;
}

完整配置

管理后台访问控制

nginx
server {
    listen 80;
    server_name www.example.com;

    root /var/www/html;

    # 管理后台
    location /admin/ {
        allow 192.168.1.0/24;
        allow 10.0.0.0/8;
        deny all;

        try_files $uri $uri/ /index.php?$query_string;
    }

    # API接口
    location /api/ {
        allow 192.168.1.0/24;
        deny all;

        proxy_pass http://backend;
    }
}

基于地理位置的访问控制

使用GeoIP模块

nginx
geo $allowed_country {
    default no;
    CN yes;
    US yes;
}

server {
    listen 80;
    server_name www.example.com;

    if ($allowed_country = no) {
        return 403;
    }

    root /var/www/html;
}

动态访问控制

基于变量的访问控制

nginx
set $allow 0;
if ($remote_addr ~* "192.168.1.") {
    set $allow 1;
}

location /admin/ {
    if ($allow = 0) {
        return 403;
    }
}

常见问题

访问被拒绝

原因: IP不在允许列表中

解决: 检查IP配置

nginx
allow 192.168.1.0/24;

规则不生效

原因: 规则顺序错误

解决: 调整规则顺序

nginx
allow 192.168.1.0/24;
deny all;

总结

访问控制的关键点:

  • allow:允许特定IP或IP段
  • deny:拒绝特定IP或IP段
  • 规则顺序:先allow后deny
  • IP段:使用CIDR表示法
  • 地理位置:使用GeoIP模块

合理配置访问控制,提高网站安全性。