分析日志定位问题
使用 awk、sort 等工具分析访问日志(/var/log/nginx/access.log),识别异常请求模式(如高频访问、异常路径、大请求体等),例如:
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -20 # 统计高频IP
grep "error" error.log | awk '{print $8}' | sort | uniq -c | sort -nr # 统计高频错误
限制异常流量
limit_req_zone 和 limit_conn_zone 限制单个IP的请求速率和并发连接数,例如:http {
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=100r/s;
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
server {
location / {
limit_req zone=api_limit burst=50;
limit_conn conn_limit 50;
}
}
}
deny 指令,或通过防火墙(如 iptables)封禁。优化Nginx配置
proxy_cache),减少后端压力。worker_processes(建议等于CPU核心数)和 worker_connections,避免资源耗尽。autoindex 避免目录遍历风险。加强安全防护
server_tokens off; 避免暴露Nginx版本。GET、POST 等必要方法,禁止 TRACE 等危险方法。X-Frame-Options、X-XSS-Protection 等头部防御常见Web攻击。监控与应急响应
top、htop、iftop 等工具监控服务器资源,或通过Prometheus+Grafana搭建可视化监控。logrotate 定期清理日志,避免日志文件过大影响性能。Fail2Ban 自动识别并封禁恶意IP。升级与漏洞修复
定期通过 apt update && apt upgrade nginx 升级Nginx,修复已知漏洞(如CVE-2016-1247等)。