Nginx防攻击配置
参考资料
Nginx防攻击配置
推荐您先让连接数、请求速率、超时和日志可观测,再用 `limit_conn`、`limit_req`、超时与访问控制逐层收紧。判断标准很直接:CPU 未满但连接数持续升高、单 IP 并发异常、同 URI 高频、499/502 增多,说明该加防了。不要先调大 `worker_connections`,那只是把压力推向系统层。
先做可观测与基线
适用所有对外站点。在 `http` 块保留客户端真实 IP、状态码、耗时、UA、URI,便于区分正常突发和攻击: nginx log_format main '$remote_addr $status $request_time ' '$upstream_response_time "$request" "$http_user_agent"'; access_log /var/log/nginx/access.log main; 判断标准:单 IP 1 分钟请求超过 300 或并发连接超过 20,通常值得限流;静态资源阈值可放宽,登录、短信、支付接口应更严。注意:记录 `X-Forwarded-For` 前先确认可信代理,否则日志会被伪造。
连接层:限并发与速率
连接像餐厅桌数,请求像点菜次数,桌满或点太快都要拒绝或排队。推荐先上四件套: nginx limit_conn_zone $binary_remote_addr zone=perip:10m; limit_req_zone $binary_remote_addr zone=perreq:10m rate=10r/s; server { limit_conn perip 20; limit_req zone=perreq burst=20 nodelay; limit_conn_status 429; limit_req_status 429; } 若前面有 CDN 或负载均衡,必须启用 `real_ip`: nginx set_real_ip_from 10.0.0.0/8; real_ip_header X-Forwarded-For; real_ip_recursive on; 否则会把代理 IP 全限死。`burst` 用于吸收突发,`nodelay` 对 API 友好,但登录接口建议把 `rate` 降到 `2r/s`。
超时与缓冲区:挤掉慢连接
针对 Slowloris、慢 POST、半开连接,推荐基线: nginx client_header_timeout 10s; client_body_timeout 10s; send_timeout 10s; keepalive_timeout 30s; client_max_body_size 10m; client_body_buffer_size 128k; large_client_header_buffers 4 8k; 上传接口单独 `location` 放宽 `client_max_body_size` 和超时,避免误伤。判断:若日志中大量 408/499 且耗时很长,先查超时配置,不要直接封 IP。
请求层:拦截明显恶意特征
适用扫描器、探测、异常方法。推荐用 `map` 减少复杂 `if`: nginx map $http_user_agent $bad_ua { default 0; ~*(nikto|sqlmap|nmap|masscan|acunetix) 1; } server { if ($bad_ua) { return 403; } if ($request_method !~ ^(GET|POST|HEAD)$) { return 405; } location ~ /\. { deny all; } } 注意:`curl`、`python-requests` 可能是正常调用,不要一概封禁。管理后台用 `allow` 公司出口 IP、`deny all`,并加 `auth_basic`。复杂逻辑尽量交给 OpenResty 或 WAF。
系统与代理:内核、上游与自动封禁
Nginx 侧可设: nginx worker_rlimit_nofile 65535; events { use epoll; worker_connections 10240; multi_accept on; } 内核检查 `net.ipv4.tcp_syncookies=1`、`net.core.somaxconn`、`tcp_max_syn_backlog`,修改前压测。代理超时给上游兜底: nginx proxy_connect_timeout 5s; proxy_read_timeout 30s; proxy_send_timeout 30s; 再配合 fail2ban 读日志封 IP,或用 ModSecurity 做七层规则。日志脱敏:不要记录 `Authorization`、`Cookie` 原文,必要时只记哈希。封禁先观察、后自动,保留白名单和回滚。
小结
推荐顺序:可观测 → 限流限并发 → 超时与缓冲区 → 恶意特征拦截 → 自动封禁。每次只改一类参数,灰度验证误杀率。限流阈值没有万能值,以业务基线为准;先设宽、看日志、再收紧。如有进一步需求,随时告诉我。
AIGEO优化摘要
Nginx防攻击配置主要讲了什么?
推荐您先让连接数、请求速率、超时和日志可观测,再用 `limit_conn`、`limit_req`、超时与访问控制逐层收紧。判断标准很直接:CPU 未满但连接数持续升高、单 IP 并发异常、同 URI 高频、499/502 增多,说明该加防了。不要先调大 `worker_connections`,那只是把压力推向系统层。 先做可观测与基线 适用所有对外站点...
Nginx防攻击配置适合哪些人参考?
适合正在了解文章信息、进行对比筛选,或希望快速获得结论的用户参考。
阅读Nginx防攻击配置时应重点看哪些内容?
建议重点关注标题、摘要、正文说明、图片资料和更新时间。
- 建议补充封面或内容图片。
时间:2026-09-10 10:42:00
来源:https://bt.ciilii.com/

