Nginx访问限制学习笔记
目录
Nginx访问限制学习笔记
Nginx 访问限制配置清单
1. 基于 IP 限制访问
location / {
# 允许指定 IP 段
allow 192.168.1.100;
allow 10.0.0.0/24;
# 拒绝所有其他 IP
deny 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\
- 上传限制:限制文件大小\
- 结合防火墙:更强的防御