54 lines
3.9 KiB
Markdown
54 lines
3.9 KiB
Markdown
# 管理入口反向代理部署
|
||
|
||
## 适用范围
|
||
|
||
管理域名由部署者指定,不固定为测试域名。独立站点模板位于 `deploy/nginx/Scert.conf.example`,适用于已完成初始化并取得正式管理证书的 Linux 服务。
|
||
|
||
当前模板不提供管理证书自动续期、证书路径切换或服务重载机制。完成这三项的实现和故障测试之前,不应据此宣布无人值守生产部署验收通过。
|
||
|
||
## 当前测试参数
|
||
|
||
| 占位符 | 本次测试值 |
|
||
| --- | --- |
|
||
| `__MANAGEMENT_HOST__` | `web.apmmk.cn` |
|
||
| `__MANAGEMENT_ORIGIN__` | `https://web.apmmk.cn` |
|
||
| `__HTTP_PORT__` | `80` |
|
||
| `__HTTPS_PORT__` | `443` |
|
||
| `__UPSTREAM_PORT__` | `9004` |
|
||
| `__FULLCHAIN_PATH__` | `/ssl-scert-acceptance/web.apmmk.cn/single/20260917-V1.0/fullchain.pem` |
|
||
| `__PRIVATE_KEY_PATH__` | `/ssl-scert-acceptance/web.apmmk.cn/single/20260917-V1.0/key.pem` |
|
||
|
||
应用配置应保持 `server.https_mode=proxy`、回环监听 `127.0.0.1:9004`,并设置 `server.proxy_https_port=443`。修改管理域名时,应同步调整应用域名、DNS、证书、Nginx 的 `server_name`、跳转地址和 `proxy_ssl_name`,不能只更改浏览器入口。使用非标准 HTTPS 端口时,`__MANAGEMENT_ORIGIN__` 必须包含该端口。
|
||
|
||
## 部署流程
|
||
|
||
1. 核对现有监听端口、Nginx 配置和同机服务。保留主配置及其他项目站点,不覆盖共享站点。
|
||
2. 备份配置并核对权限。使用模板生成独立站点,逐项替换英文占位符;检查没有残留占位符。
|
||
3. 确认证书覆盖管理域名且未过期,私钥受限。上游必须通过公共 CA 与主机名校验,不允许关闭 `proxy_ssl_verify`。
|
||
4. 执行 `nginx -t`,成功后才执行 `systemctl reload nginx`。检查失败时保留失败文件用于审查,但从有效配置加载目录移出,不重载服务。
|
||
5. 复用已开放的 TCP 80/443,由 Nginx 按域名分流,不需要另开 8003/8004。管理后台应按实际使用范围限制来源。不要将上游 `9004` 对公网开放。
|
||
6. 核对 `systemctl is-enabled Scert.service nginx.service`。启用开机自启不等于完成主机重启演练。
|
||
|
||
`Host $http_host` 用于保留客户端域名及显式端口。HTTP 跳转目标使用固定配置,不使用客户端 Host 作为跳转目标。共享 Nginx 的默认拒绝站点应统一配置;本模板不重复声明 `default_server`,避免与其他站点冲突。当前服务器已有未知 HTTP 域名返回 404、未知 TLS SNI 拒绝握手的默认站点。
|
||
|
||
## 验收流程
|
||
|
||
服务器内先验证 Nginx 与上游,不跳过 TLS 校验:
|
||
|
||
```sh
|
||
curl --noproxy '*' --resolve web.apmmk.cn:443:127.0.0.1 \
|
||
--fail --show-error https://web.apmmk.cn/readyz
|
||
curl --noproxy '*' --resolve web.apmmk.cn:80:127.0.0.1 \
|
||
--head 'http://web.apmmk.cn/login?acceptance=1'
|
||
```
|
||
|
||
预期分别是就绪响应和 308 跳转,跳转保留路径及查询参数。随后必须从独立公网主机与真实浏览器验证,不使用 `--resolve`、SSH 隧道或跳过证书校验掩盖入口故障。
|
||
|
||
桌面浏览器验收包括登录、刷新会话、退出后访问拒绝、静态资源和不同桌面宽度;协议验收包括 Cookie 安全属性、跨域写入拒绝和退出后的旧 Cookie 重放拒绝。使用新浏览器上下文,不复用其他项目缓存或会话。
|
||
|
||
若必须借助 SSH 隧道继续应用测试,应明确标记为隧道测试;即使浏览器全部通过,也不能等同公网部署通过。清理测试环境时只操作确认过的独立测试数据库,不清空共享服务器上的其他项目数据库。
|
||
|
||
## 剩余门槛
|
||
|
||
2026 年 9 月 18 日改为标准 80/443 后,独立 Linux 主机公网 HTTPS 就绪与 HTTP 跳转均已通过,旧 8003/8004 不再监听。具体结果见 `Linux生产流程测试记录.md`。管理证书自动续期、更新后的双层 TLS 生效、故障回退以及真实目标机部署仍需继续完成,不能将入口可达作为完整生产验收结论。
|