--- name: session-20260614-1 description: 2026-06-14 第1次会话 — HTTPS OPTIONS跨域修复 + 转发规则编辑弹窗Tab改造(转发信息/配置文件/SSL) metadata: type: session date: 2026-06-14 sessionNumber: 1 startTime: 2026-06-14T09:00:00+08:00 --- # 2026-06-14 第1次会话 ## 会话摘要 修复了 `file.wg.zgitm.com` 的 CORS 跨域问题(OPTIONS 预检无 CORS 头),并将转发规则编辑弹窗改为宝塔风格的三 Tab 布局(转发信息/配置文件/SSL),新增配置文件在线编辑和 SSL 证书密钥查看功能。 ## 关键操作 ### 1. HTTPS 模板 OPTIONS 预检 CORS 修复 - **做了什么**: 在 `nginx_service.py` HTTPS_TEMPLATE 的 server 级别添加 CORS add_header(`always` 参数),确保 `if ($request_method = OPTIONS) { return 204; }` 拦截时也能带上 CORS 响应头 - **根因**: OPTIONS 请求被 server 级 `if` 拦截返回 204,但 CORS add_header 只在 location 块内,没机会执行 - **验证**: 修复前 OPTIONS 返回 `204` 无任何 CORS 头;修复后返回 `access-control-allow-*` 三个头 - **结果**: 已验证通过,模板已修复并部署到 10.1.1.160 ### 2. 新增配置文件查看/编辑接口 - **做了什么**: Python API 新增 `GET/PUT /api/nginx/rules//config`,后端 Java 新增透传方法,前端编辑弹窗新增"配置文件"Tab - **GET**: 读取 `/etc/nginx/conf.d/{domain}.conf` 返回原始内容 - **PUT**: 写入配置 → `nginx -t` 语法检查 → 失败自动回滚 → 成功则 reload - **结果**: Python API 已部署到 10.1.1.160,后端和前端待用户部署 ### 3. 新增 SSL 证书/密钥查看接口 - **做了什么**: Python API 新增 `GET /api/nginx/rules//ssl`,读取 `.pem` 和 `.key` 文件内容返回,前端 SSL Tab 只读显示 - **结果**: Python API 已部署,后端和前端待用户部署 ### 4. 编辑弹窗改为 Tab 布局(900px 宽) - **做了什么**: NginxForwarding.vue 弹窗改为 `el-tabs` 三标签页: - **转发信息**: 协议类型/域名/转发目标(原有表单,HTTPS 规则不可切换回 HTTP) - **配置文件**: nginx.conf 查看、编辑(黄色背景标识编辑模式)、保存并重载 - **SSL**: 仅 HTTPS 规则显示,证书(PEM)和密钥(KEY)只读查看 - **原因**: 用户要宝塔面板风格的配置编辑体验 - **结果**: 前端代码已改完,待用户构建部署 ## 涉及文件 ### Python API(已部署到 10.1.1.160:/opt/nginx-api/) | 文件 | 操作 | 说明 | |------|------|------| | `services/nginx_service.py` | 改 | HTTPS_TEMPLATE server 级加 CORS add_header | | `app.py` | 改 | 新增 config 查看/编辑 + SSL 查看接口 | ### 后端 Java(待用户部署) | 文件 | 操作 | 说明 | |------|------|------| | `service/PythonApiClient.java` | 改 | 新增 getRuleConfig/updateRuleConfig/getSslFiles | | `service/ForwardingRuleService.java` | 改 | 新增 getConfig/updateConfig/getSslFiles | | `controller/ForwardingRuleController.java` | 改 | 新增 GET/PUT /{id}/config + GET /{id}/ssl | ### 前端 Vue(待用户部署) | 文件 | 操作 | 说明 | |------|------|------| | `api/nginxApi.js` | 改 | 新增 getRuleConfig/updateRuleConfig/getRuleSslFiles | | `views/NginxForwarding.vue` | 重写弹窗 | Tab 布局(转发信息/配置文件/SSL) | ## 重要信息 ### 服务器架构(本次确认) - **10.1.1.160**: Nginx 反向代理 + Python API (`/opt/nginx-api/`, systemd: `nginx-api`) - **10.1.1.170**: Mokee Gateway (9000端口) + 前端静态文件 (`/opt/mokee/web/`, 通过 docker-proxy 3002 暴露) + 部署服务 (4003端口) - **10.1.1.160 上的域名配置**: /etc/nginx/conf.d/ 下各 .conf 文件 - **10.1.1.160 SSL 证书目录**: /etc/nginx/ssl/{domain}.pem + {domain}.key ### SSH 连接方式 - 10.1.1.160: root / mokee. (需密码,通过 Python paramiko) - 10.1.1.170: root / mokee. (需密码,通过 Python paramiko) ### Python 远程操作 - Python 路径: `C:\Users\Administrator\AppData\Local\Programs\Python\Python312\python.exe` - 使用 paramiko 连接 SSH,pymysql 连接 MySQL ## 待处理 - [ ] 用户自行部署 Java 后端和 Vue 前端 - [ ] 验证前端 Tab 布局弹窗完整功能