专业的 Nginx 配置文件拓扑分析工具 - 将 Nginx 配置转换为可视化拓扑图,清晰展示服务链路关系
- ✅ 多文件配置解析 - 支持批量上传多个 Nginx 配置文件
- ✅ 链路关系分析 - 自动识别 Nginx 之间的转发关系
- ✅ 可视化拓扑图 - 交互式 SVG 拓扑图展示
- ✅ 节点拖动 - 自由调整节点位置
- ✅ 画布缩放 - 滚轮缩放,支持 0.3x - 3x 范围
- ✅ 画布平移 - 拖动空白区域平移视图
- ✅ 路由标签 - 在连线上显示路由路径("/api/" → "API")
- ✅ 权重可视化 - 根据 upstream weight 显示线条粗细
- ✅ 节点详情 - 悬停显示节点详细信息
- ✅ PNG 导出 - 导出高分辨率拓扑图
- ✅ SVG 导出 - 导出带动画的 SVG 文件
- ✨ SVG 动画导出 - 边线流动 + 节点弹出动画
- ✨ Tooltip 位置优化 - 显示在节点附近,自动避开边界
- ✨ server 块解析修复 - 支持嵌套 location 块
- ✨ 静态资源路径 - 支持 root 路径识别
- ✨ 节点名称优化 - 显示 upstream 名称而非 IP
- 下载
index.html文件 - 用浏览器打开
- 上传 Nginx 配置文件
- 查看拓扑图
# 克隆仓库
git clone https://github.com/yourusername/GuanTianJing-Nginx.git
cd GuanTianJing-Nginx
# 使用任意静态服务器
npx serve .
# 或
python -m http.server 8080
# 或
npx http-server .然后在浏览器中打开 http://localhost:8080
支持两种上传方式:
- 拖拽上传 - 将配置文件拖入上传区域
- 点击上传 - 点击上传区域选择文件
支持的文件格式:
.conf.txt.nginx
上传后自动解析并生成拓扑图:
Client
↓
www.123.com:80 (frontend_cluster.conf)
↓ frontend_cluster
frontend_cluster (192.168.1.11, 192.168.1.12)
↓ 192.168.1.11
192.168.1.11:80 (b.conf)
↓ proxy_service_c
proxy_service_c (192.168.1.20)
↓ 192.168.1.20
192.168.1.20:80 (c.conf)
↓ order_service / user_service
order_service (127.0.0.1:8080)
user_service (127.0.0.1:9090)
- 拖动节点 - 拖动节点调整位置
- 滚轮缩放 - 以鼠标位置为中心缩放
- 拖动画布 - 拖动空白区域平移
- 悬停节点 - 显示详细信息
- 一键复原 - 恢复初始视图
- PNG 导出 - 高分辨率图片(2x 分辨率)
- SVG 导出 - 带动画的可编辑 SVG 文件
server {
listen 80;
server_name www.123.com;
location / {
proxy_pass http://192.168.1.11;
proxy_set_header Host $host;
}
}server {
listen 80;
server_name 192.168.1.11;
location / {
proxy_pass http://192.168.1.12;
proxy_set_header Host $host;
}
}upstream backend_servers {
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server 192.168.2.123:9090;
}
server {
listen 80;
server_name 192.168.1.12;
location / {
proxy_pass http://backend_servers;
}
}frontend_cluster.conf
upstream frontend_cluster {
server 192.168.1.11:80 weight=5;
server 192.168.1.12:80;
keepalive 32;
}
server {
listen 80;
server_name www.123.com;
location / {
proxy_pass http://frontend_cluster;
}
}b.conf
upstream proxy_service_c {
server 192.168.1.20:80;
keepalive 16;
}
server {
listen 80;
server_name 192.168.1.11;
location /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://proxy_service_c;
}
location /static/ {
root /var/www/html;
}
}c.conf
upstream order_service {
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
}
upstream user_service {
server 127.0.0.1:9090 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
server_name 192.168.1.20;
location /orders {
proxy_pass http://order_service;
}
location /users {
proxy_pass http://user_service;
}
}- 前端框架: 纯 HTML/CSS/JavaScript
- 图表库: SVG 原生渲染
- 样式: CSS3 动画和过渡效果
- 字体: JetBrains Mono + Space Grotesk
- 无依赖: 无外部 JS 库依赖
GuanTianJing-Nginx/
├── index.html # 主页面(包含所有功能)
├── docs/
│ ├── 需求.md # 需求文档
│ ├── 设计.md # 设计文档
│ ├── test_report.md # 测试报告
│ └── 优化建议.md # 优化建议
├── examples/
│ ├── 1/ # 示例配置 1
│ │ ├── a.conf
│ │ ├── b.conf
│ │ └── c.conf
│ ├── 2/ # 示例配置 2
│ │ ├── README.md
│ │ ├── backup_cluster.conf
│ │ ├── cdn_edge.conf
│ │ └── ...
│ ├── 3/ # 示例配置 3(链路分析)
│ │ ├── b.conf
│ │ ├── c.conf
│ │ └── frontend_cluster.conf
│ └── 4/ # 示例配置 4
│ └── a.conf
└── src/
├── index.html # 源代码(镜像)
└── index_backup_*.html # 备份文件
- 🏢 微服务架构分析 - 清晰展示服务调用链路
- 🔄 Nginx 配置审查 - 快速理解配置文件结构
- 📊 系统架构可视化 - 生成架构拓扑图
- 🐛 问题排查 - 快速定位转发问题
- 📖 文档编写 - 生成配置说明文档
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
# 克隆仓库
git clone https://github.com/yourusername/GuanTianJing-Nginx.git
cd GuanTianJing-Nginx
# 直接用浏览器打开 index.html 即可开发
open index.html本项目采用 MIT 许可证 - 详见 LICENSE 文件
- 感谢所有贡献者和用户的支持
- 感谢 Nginx 官方文档提供的参考
- 感谢 你们喜爱的老王 的灵感与支持
如有问题或建议,请通过以下方式联系:
⭐ 如果这个项目对你有帮助,请给它点个 Star!