接入加速后,站点日志里的来源地址全变成几个固定地址,按 IP 做的限流和封禁全部失效,访问统计也对不上。
这类报错背后常见的原因有几处,逐个排除就行。多层代理没有配置真实地址还原。还有一种是头部可以由客户端伪造,直接信任会有风险。
不容易想到的是,加速回源段的地址需要单独维护。
上来先确认请求头里带了哪些地址
curl -sI https://域名 | grep -i x-forwarded
接着开启真实地址模块并信任回源段
grep -n real_ip_header /etc/nginx/nginx.conf
然后重载后看日志来源
tail -f /var/log/nginx/access.log
等前面都确认过,再核对限流是否恢复生效
grep -c ' 429 ' /var/log/nginx/access.log
同事提醒我看一下最近一次发布,时间点确实对得上。
恢复的判定其实很直接。访问日志恢复成真实客户端地址,限流和封禁规则重新生效,统计报表与访问量吻合。
只能信任加速回源段的地址,把信任范围写成全部,任何人都能伪造头部绕过封禁;回源段变更要跟着更新。报错文案容易误导,真正的原因往往在相邻那一层的日志里。