82 lines
4.1 KiB
Markdown
82 lines
4.1 KiB
Markdown
---
|
||
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/<domain>/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/<domain>/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 布局弹窗完整功能
|