目录

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_connlimit_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)

  1. 生成密码文件:
htpasswd -c /etc/nginx/.htpasswd user1
  1. 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\
  • 上传限制:限制文件大小\
  • 结合防火墙:更强的防御