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

4.1 KiB
Raw Permalink Blame History

name, description, metadata
name description metadata
session-20260614-1 2026-06-14 第1次会话 — HTTPS OPTIONS跨域修复 + 转发规则编辑弹窗Tab改造转发信息/配置文件/SSL
type date sessionNumber startTime
session 2026-06-14 1 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_headeralways 参数),确保 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 布局弹窗完整功能