Gixy-Next:NGINX 配置误配置扫描器
Source: Dev.to
什么是 Gixy‑Next?
Gixy‑Next 是 “Gixy 系列” NGINX 配置分析器的一个维护分支。它会静态扫描你的配置(无需运行 NGINX),并以严重程度等级和可操作的上下文报告发现的问题。
它最初是 Yandex 的原始 Gixy(2017 年首次发布)的分支,而原项目已不再维护,且在现代 Python/NGINX 环境下表现不佳。Gixy‑Next 的存在是为了保持项目健康:支持现代 Python、修复 bug、改进检测逻辑,并专注于可维护、可审查的改动。
快速开始
安装
pip3 install gixy-next
# or, if you use uv:
uv pip install gixy-next
运行(默认扫描 /etc/nginx/nginx.conf)
gixy
扫描指定文件
gixy /opt/nginx.conf
提示:扫描 完整渲染 的配置(包括已解析的 include)
NGINX 配置通常分散在许多 include 文件中。一个可靠的做法是导出完整的渲染后配置,并在运行 NGINX 的系统之外的另一台机器上扫描该产物:
# 在一台机器上导出完整渲染的 NGINX 配置
nginx -T > ./nginx-dump.conf
# 在另一台机器上,仅使用该单文件运行 gixy
gixy ./nginx-dump.conf
# 或通过 stdin:
cat ./nginx-dump.conf | gixy -
它能捕获的内容(示例)
Gixy‑Next 附带大量插件,能够检测各种问题。以下是你可能关心的几个示例:
- HTTP 响应拆分风险
- 类 SSRF 的代理错误配置
- Host 头部伪造风险
- Alias 路径遍历陷阱
- 弱
Referer/Origin校验 - 未锚定的正则表达式模式及 ReDoS 风险
- 高危 DNS 解析器配置
- 通过
server_tokens泄露版本信息 - 看似正常但误导的模式,如
location中的if用法
完整插件列表可在 Gixy‑Next 文档 中查看。关键在于:它能发现那些容易出错或完全被忽视的问题。
调整检测范围:只运行你想要的检查
运行特定子集的检查
gixy --tests http_splitting,ssrf,version_disclosure
跳过噪声检查
gixy --skips low_keepalive_requests,worker_rlimit_nofile_vs_connections
按严重程度过滤(复合 -l)
# -l = LOW 及以上
# -ll = MEDIUM 及以上
# -lll = 仅 HIGH
gixy -ll
输出格式:对人友好,对机器友好
纯文本(无 ANSI 颜色)
gixy -f text
JSON(非常适合 CI 流水线和仪表盘)
gixy -f json ./nginx-dump.conf
JSON 包含 plugin、severity、file、line、reason 以及针对具体检查的 reference 链接等字段。
我喜欢这种方式的原因
- 它补充代码审查:审查者关注意图,扫描器捕获模式。
- 将“部落知识”式的加固规则转化为可重复的检查。
- 适配现代工作流:本地运行、CI 中运行、随时间跟踪。
贡献 / 反馈
如果你遇到某个配置模式应该被检测却未被发现,请提交一个包含最小可复现片段的 Issue。欢迎新的插件和改进。