Files
nginxserver/memory/session-20260614-1.md
2026-07-16 13:03:11 +08:00

82 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 连接 SSHpymysql 连接 MySQL
## 待处理
- [ ] 用户自行部署 Java 后端和 Vue 前端
- [ ] 验证前端 Tab 布局弹窗完整功能