如何开启Nginx的访问控制与限制目录

2025.5.29 杂七杂八 634

如何开启Nginx的访问控制与限制目录

本文详细介绍Nginx访问控制与目录限制的配置方法,包括IP黑白名单、密码认证、限制HTTP方法等核心功能,并提供可直接使用的代码片段。通过合理配置可有效提升服务器安全性,防止未授权访问。

一、基于IP的访问控制

Nginx可通过allowdeny指令实现IP黑白名单控制:

location /admin/ {
    deny  192.168.1.100;
    allow 192.168.1.0/24;
    allow 10.0.0.0/8;
    deny  all;
}

配置说明:

  • 规则按声明顺序生效,匹配到第一条规则后停止
  • 建议将deny all作为最后一条规则
  • 支持CIDR格式的网段表示法

二、目录访问限制

1. 禁用目录列表

location /downloads/ {
    autoindex off;
}

2. 限制HTTP方法

location /api/ {
    limit_except GET POST {
        deny all;
    }
}

3. 密码认证保护

首先创建密码文件:

sudo htpasswd -c /etc/nginx/.htpasswd username

然后在Nginx配置中添加:

location /private/ {
    auth_basic "Restricted Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

三、高级访问控制

1. 地理位置限制

需要安装ngx_http_geoip_module模块:

geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allowed_country {
    default no;
    CN yes;
    US yes;
}

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

2. 请求频率限制

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

location /search/ {
    limit_req zone=one burst=5;
}

四、配置验证与调试

每次修改配置后执行:

sudo nginx -t   测试配置
sudo systemctl reload nginx   重载配置

调试建议:

  • 使用tail -f /var/log/nginx/error.log查看错误日志
  • 临时开启rewrite_log on;调试重定向规则
  • 通过curl测试不同IP和User-Agent的访问效果

评论