nginx公网通用防护
Nginx 公网防护够用版
如果只是想先防住大部分常见恶意,请先做两件事:
- 限流
- 隐藏敏感路径和文件
一、隐藏敏感路径和文件
放在对应网站的 server {} 里:
location ~ /\. { |
什么意思:
- 第一段:禁止访问隐藏文件,比如
.git、.env - 第二段:禁止访问常见备份和压缩文件,比如
.bak、.sql、.zip
作用:
- 防止别人扫你的敏感文件
- 防止误把备份文件暴露到公网
二、限流
先放在 http {} 里:
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s; |
再放在登录或接口的 location {} 里:
location /login/ { |
什么意思:
limit_req_zone:定义一条按 IP 限流的规则rate=5r/s:每个 IP 每秒最多 5 个请求burst=10:允许短时间多出来 10 个请求nodelay:在突发范围内直接处理,不排队
作用:
- 防止别人一直刷登录
- 防止接口被高频乱打
- 能挡住一部分爆破和低级攻击
三、放哪里
limit_req_zone ...放http {}- 两个
location ... deny all;放server {} limit_req ...放要保护的location {}
最简单理解:
- 全局规则放
http {} - 某个网站规则放
server {} - 某个接口规则放
location {}
四、改完后要做
先检查:
nginx -t |
再重载:
systemctl reload nginx |
如果出问题,就看:
tail -f /var/log/nginx/error.log |
五、一句话
够用版就记住这件事:拦掉敏感文件,再给登录和接口加限流。