Nginx访问限制学习笔记
文章目录
- Nginx 访问限制配置清单
- 1. 基于 IP 限制访问
- 2. 基于 User-Agent 限制(防爬虫)
- 3. 基于 URL 路径限制(保护敏感文件)
- 4. 请求频率限制(防 DDoS / 暴力请求)
- 4.1 限制并发连接数
- 4.2 限制请求速率
- 5. 访问认证限制(Basic Auth)
- 6. 防盗链(基于 Referer)
- 7. 阻止特定请求方法
- 8. 限制上传文件大小
- 9. 配合防火墙(Linux 层面)
- 总结
Nginx 访问限制配置清单
1. 基于 IP 限制访问
location / {# 允许指定 IP 段allow 192.168.1.100;allow 10.0.0.0/24;# 拒绝所有其他 IPdeny all;
}
应用:只允许内网访问后台管理系统。
2. 基于 User-Agent 限制(防爬虫)
if ($http_user_agent ~* "curl|wget|python") {return 403;
}
$http_user_agent
是请求头中的客户端标识
~*
表示不区分大小写的正则匹配
应用:屏蔽脚本工具批量请求。
3. 基于 URL 路径限制(保护敏感文件)
# 禁止访问版本库目录 .git、.svn
location ~ /\.git {deny all;
}
# 匹配 URL 中带有 /.git 的路径location ~ /\.svn {deny all;
}
应用:防止代码泄露。
4. 请求频率限制(防 DDoS / 暴力请求)
4.1 限制并发连接数
使用 limit_conn
和 limit_req
模块限制请求速率,防止 DDoS 或暴力请求
http {limit_conn_zone $binary_remote_addr zone=addr:10m;server {location / {limit_conn addr 1; # 每个 IP 最多 1 个并发连接}}
}
4.2 限制请求速率
http {limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;server {location /api/ {limit_req zone=one burst=5 nodelay;}}
}
# burst=5:允许突发5个请求
# nodelay:超出的请求立即返回503,不排队
应用:保护接口 API,防止刷接口。
5. 访问认证限制(Basic Auth)
- 生成密码文件:
htpasswd -c /etc/nginx/.htpasswd user1
- Nginx 配置:
location /admin {auth_basic "Restricted Area";auth_basic_user_file /etc/nginx/.htpasswd;
}
应用:后台管理加密码保护。
6. 防盗链(基于 Referer)
location /images/ {valid_referers none blocked *.example.com;if ($invalid_referer) {return 403;}
}
应用:防止图片、视频被外站盗链。
7. 阻止特定请求方法
if ($request_method !~ ^(GET|POST)$) {return 405;
}
应用:禁止 PUT/DELETE 等危险请求。
8. 限制上传文件大小
server {client_max_body_size 10m; # 限制上传文件最大 10MB
}
应用:防止大文件拖垮服务器。
9. 配合防火墙(Linux 层面)
Nginx 配置只是应用层限制,更强的控制可以配合 Linux 防火墙 使用
# UFW
sudo ufw deny from 192.168.1.200# iptables
sudo iptables -A INPUT -s 192.168.1.200 -j DROP
应用:更底层的访问限制。
总结
Nginx 常见访问限制手段: - IP 限制:allow/deny\
- User-Agent 限制:防爬虫\
- 路径限制:保护敏感目录\
- 限流:limit_conn / limit_req 防 DDoS\
- 认证限制:Basic Auth\
- 防盗链:Referer 检测\
- 请求方法限制:只允许 GET/POST\
- 上传限制:限制文件大小\
- 结合防火墙:更强的防御