提交端口修改
This commit is contained in:
1 parent
8a6c31c14d
commit
8700321af6
8 files changed
+31
-30
No files matched your search
@@ -4,7 +4,7 @@
|
||||
| --- | --- |
|
||||
| 目标服务器目录 | /home/firee-safety-ymd |
|
||||
| 运行方式 | 宿主机 Nginx 终止 HTTPS,Docker Compose 运行单个 Go 服务 |
|
||||
| 应用监听边界 | 只把容器端口发布到宿主机 127.0.0.1:8080 |
|
||||
| 应用监听边界 | 容器内监听 8080,只发布到宿主机 127.0.0.1:16587 |
|
||||
| 数据库 | 使用现有 PostgreSQL/PostGIS;本手册不创建数据库容器、不导入 SQL |
|
||||
| 状态 | 测试环境部署基线;目标服务器、公网 DNS/TLS 和 SuperAgent 回调仍需现场验证 |
|
||||
|
||||
@@ -12,16 +12,16 @@
|
||||
|
||||
## 1. 部署前提
|
||||
|
||||
本仓库在本手册编写时尚无 Git 提交。服务器不能直接 clone 当前工作区,必须由项目维护者先审阅变更、手动 commit 并 push 到远程仓库;本项目不会自动提交、推送或迁移服务器数据。以下命令以发布 `main` 分支为例。
|
||||
本仓库已有可由服务器获取的 `main` 分支。后续部署仍必须由项目维护者先审阅本地变更、手动 commit 并 push 到远程仓库;本项目不会自动提交、推送或迁移服务器数据。以下命令以发布 `main` 分支为例。
|
||||
|
||||
在开发机提交前先检查暂存区;当前已有两份用户 Excel 处于暂存状态,`git commit` 会把它们一并提交,除非维护者明确取消暂存。不要把 `.env` 或被忽略的原始 SQL 强制加入 Git:
|
||||
在开发机提交前先检查暂存区,不要把 `.env` 或被忽略的原始 SQL 强制加入 Git:
|
||||
|
||||
~~~bash
|
||||
cd /Users/andy/IdeaProjects/fire-safety-ymd
|
||||
git status --short
|
||||
git diff --cached --stat
|
||||
# 审阅后通过 IDE 或逐项执行 git add,只暂存确定要发布的路径。
|
||||
git commit -m 'bootstrap fire-safety test deployment'
|
||||
git commit
|
||||
git push -u origin main
|
||||
~~~
|
||||
|
||||
@@ -131,7 +131,7 @@ FIRE_SAFETY_POSTGIS_EXPECTED_SRID=4326
|
||||
- FIRE_SAFETY_CHAT_COMPAT_APP_ID 是公开路径标识,不是 Secret;它必须与 Nginx 的精确 location = /api/v1/apps/<app-id>/completion 完全一致。
|
||||
- 使用 FIRE_SAFETY_MCP_SCOPE_MODE=all 时,FIRE_SAFETY_MCP_ALLOWED_TOWNS 必须保持为空。all 是服务账号级的固定查询表范围,不是最终用户级授权。
|
||||
- FIRE_SAFETY_POSTGIS_MIGRATION_DSN 不应配置给运行服务;迁移凭证只供一次性迁移命令使用,完成后应移除。
|
||||
- FIRE_SAFETY_HTTP_ADDR 在容器内应为 :8080,安全边界由 Compose 的 127.0.0.1:8080:8080 和宿主机 Nginx 提供;不要在 Compose 场景设为容器内的 127.0.0.1:8080。
|
||||
- FIRE_SAFETY_HTTP_ADDR 在容器内应为 :8080,安全边界由 Compose 的 127.0.0.1:16587:8080 和宿主机 Nginx 提供;不要在 Compose 场景设为容器内的 127.0.0.1:8080。
|
||||
- 不要用没有 --quiet 的 docker compose config 或 docker inspect 把完整环境渲染到终端、CI 日志或工单;检查 .env 权限仍为 600。
|
||||
|
||||
## 4. 容器访问现有 PostgreSQL/PostGIS
|
||||
@@ -163,7 +163,7 @@ docker compose build --pull
|
||||
docker compose up -d
|
||||
docker compose ps
|
||||
docker compose logs --tail=100 api
|
||||
curl --fail http://127.0.0.1:8080/health
|
||||
curl --fail http://127.0.0.1:16587/health
|
||||
~~~
|
||||
|
||||
预期结果:容器为 Up(健康状态由 Compose 显示),health 返回 HTTP 200;有限日志不应出现 DSN、密码、Token 或 API Key。docker compose config --quiet 只验证配置,不输出展开后的 Secret。若 Compose 不支持 --quiet,升级 Compose 或使用不会回显结果的等价校验方式。
|
||||
@@ -179,7 +179,7 @@ docker compose logs --tail=200 api
|
||||
|
||||
## 6. 安装/替换宿主机 Nginx 配置
|
||||
|
||||
仓库模板为 deploy/nginx/fire-safety-ymd.conf.example,不含真实 Secret。它把精确 Chat 兼容路径、/mcp 和可选 /health 反代到 127.0.0.1:8080,其他路径返回 404;详细 SSE 边界见 nginx-public-entry.md。
|
||||
仓库模板为 deploy/nginx/fire-safety-ymd.conf.example,不含真实 Secret。它把精确 Chat 兼容路径、/mcp 和可选 /health 反代到 127.0.0.1:16587,其他路径返回 404;详细 SSE 边界见 nginx-public-entry.md。
|
||||
|
||||
先只查找拥有 agent.nianxx.com 的配置文件名,避免使用 nginx -T 把旧文件中的 DashScope Key 打到终端:
|
||||
|
||||
@@ -207,7 +207,7 @@ sudo vi /etc/nginx/conf.d/fire-safety-ymd.conf
|
||||
编辑时完成以下非 Secret 替换:
|
||||
|
||||
- 将 replace-with-fire-safety-app-id 替换为 .env 中的 FIRE_SAFETY_CHAT_COMPAT_APP_ID。
|
||||
- 确认证书路径、域名和上游 127.0.0.1:8080 符合测试服务器。
|
||||
- 确认证书路径、域名和上游 127.0.0.1:16587 符合测试服务器。
|
||||
- 保留精确 location、SSE 的 proxy_buffering off/超时设置和其他路径的 404;不要恢复旧配置的 location /、DashScope proxy_pass、Authorization Key 或 Nginx if Token 比较。
|
||||
- limit_req_zone 必须位于 Nginx http 上下文;模板假定由 conf.d/*.conf 在 http {} 中 include。若 include 层级不同,把指令移到合法的 http 上下文。
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
| --- | --- |
|
||||
| 目标 | 让 `agent.nianxx.com` 通过 HTTPS 访问本项目的兼容对话接口和 MCP |
|
||||
| 状态 | 示例配置;公网机器、证书、网络白名单和真实鉴权仍待联调 |
|
||||
| 上游 | 仅反代本机 `127.0.0.1:8080` |
|
||||
| 上游 | 仅反代本机 `127.0.0.1:16587`;容器内部仍监听 8080 |
|
||||
|
||||
## 1. 与旧配置的变化
|
||||
|
||||
@@ -13,7 +13,8 @@
|
||||
```text
|
||||
公网 HTTPS
|
||||
-> Nginx(TLS、精确路径、限流、SSE 传输设置)
|
||||
-> 127.0.0.1:8080(fire-safety-ymd)
|
||||
-> 127.0.0.1:16587(Docker 发布端口)
|
||||
-> 容器内 :8080(fire-safety-ymd)
|
||||
-> Go 侧校验 xtoken / MCP Bearer
|
||||
```
|
||||
|
||||
@@ -35,7 +36,7 @@ Nginx 不再调用 DashScope,也不保存或注入 SuperAgent Open API Key、C
|
||||
1. 把 `location = /api/v1/apps/replace-with-fire-safety-app-id/completion` 中的占位符替换为安全的 app ID。
|
||||
2. 该 app ID 必须与 Go 服务的 `FIRE_SAFETY_CHAT_COMPAT_APP_ID` 完全一致;两处不一致会导致请求被拒绝。
|
||||
3. 确认证书路径 `/cert/agent.nianxx.com.pem` 和 `/cert/agent.nianxx.com.key` 在公网机器上存在,并由 Nginx 进程可读。
|
||||
4. 直接在宿主机运行 Go 时,确认服务只监听 `127.0.0.1:8080`;使用本仓库 Compose 时,容器内监听 `:8080`,但端口映射必须保持为 `127.0.0.1:8080:8080`。两种方式都不要把 8080 或 PostgreSQL 5432 暴露到公网。
|
||||
4. 直接在宿主机运行 Go 时,应选择未占用的回环端口并同步修改 Nginx upstream;使用本仓库 Compose 时,容器内监听 `:8080`,端口映射保持为 `127.0.0.1:16587:8080`。不要把 16587、容器 8080 或 PostgreSQL 5432 暴露到公网。
|
||||
5. 按环境配置 DNS、云防火墙/安全组和 SuperAgent 对 `/mcp` 的来源 IP/TLS 要求;这些部署事实尚未由本项目验证。
|
||||
|
||||
`limit_req_zone` 必须位于 Nginx `http` context,不能放进 `server` 或 `location`。示例文件假定它被 `conf.d/*.conf` 从 `http {}` 中 include;如果部署系统不是这样 include,应把两条 `limit_req_zone` 指令单独移到 `http {}`,并保留 `server`/`upstream` 在合法上下文。
|
||||
@@ -45,9 +46,9 @@ Nginx 不再调用 DashScope,也不保存或注入 SuperAgent Open API Key、C
|
||||
在服务器的未提交 Secret 管理方式(例如权限收紧的 `.env`、systemd EnvironmentFile 或容器 Secret)中配置,不要写入 Nginx 文件或 Git:
|
||||
|
||||
```text
|
||||
# 宿主机直接运行时使用 127.0.0.1:8080;Compose 会覆盖为容器内的 :8080,
|
||||
# 并只把端口发布到宿主机回环地址。
|
||||
FIRE_SAFETY_HTTP_ADDR=127.0.0.1:8080
|
||||
# Compose 会覆盖为容器内的 :8080,并发布到宿主机回环地址 16587。
|
||||
# 若直接在宿主机运行,则使用 127.0.0.1:16587 并保持 Nginx upstream 一致。
|
||||
FIRE_SAFETY_HTTP_ADDR=127.0.0.1:16587
|
||||
|
||||
FIRE_SAFETY_SUPERAGENT_ENABLED=true
|
||||
FIRE_SAFETY_SUPERAGENT_BASE_URL=https://<superagent-domain>
|
||||
|
||||
Reference in new issue
Block a user