本文详细介绍Nginx访问控制与目录限制的配置方法,包括IP黑白名单、密码认证、限制HTTP方法等核心功能,并提供可直接使用的代码片段。通过合理配置可有效提升服务器安全性,防止未授权访问。
一、基于IP的访问控制
Nginx可通过allow
和deny
指令实现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的访问效果
评论