gongxiangp2/docs/NETWORK_TOPOLOGY.md
chenpei 4712175cb0 feat(素材链路): 发布白底图双轨与AI生图回传能力
- 完成白底图 WebP 双轨接口、上传链路与预览缓存改造
- 新增 AI 生图平台成品回传接口、任务状态与表单规则
- 补齐 AI 生成标签、任务详情补全、相关测试与对接文档
2026-03-25 10:28:02 +08:00

8.1 KiB
Raw Blame History

网络拓扑文档

现网快照(2026-03-19):

  • sc.jiansun.vip -> 180.97.221.140 -> nginx -> 127.0.0.1:2321(主) / 127.0.0.1:2320(备)
  • sc 专用穿透已独立:192.168.58.20 frpc-sc-entry(0.65.0) -> 180.97.221.140:7002 frps-sc-entry(0.65.0) -> 127.0.0.1:2321/2322
  • 3d.yydd.ai 目前仍直接走南京机旧链路 127.0.0.1:2320,所以旧 2320 不能立刻下线
  • s3.jiansun.vip -> 180.97.215.57 -> nginx cache(/data/nginx-cache/s3, 180g) -> 127.0.0.1:29000 -> FRP -> 192.168.58.20:9000
  • s3.jiansun.vip 当前已经收口为“预览图优先缓存”:
    • AI 生图平台:/gongxiangpan/uploads/ 下的图片对象进入长缓存
    • 素材库:preview-*、display-*、model-*、video-cover-*、audio-cover-*、pdf-preview-*、product-package/*-preview 这类预览图片对象进入长缓存
    • video-preview-*.mp4、video-clip-*.mp4、压缩包、源文件下载等大对象继续 BYPASS
  • s3.yydd.ai -> 180.97.221.140,当前只保留为备用 / 回切域名,不再作为默认资源入口维护
  • 两端 WireGuard 当前都是停用状态,仅保留安装与配置,现网主链路已经回到 FRP

最后更新:2026-03-19 本文档优先记录“当前现网已验证的对外行为”和“项目内实际配置”。南京入口机的内层转发细节,如需继续下钻,请以服务器现场配置为准。

当前结论

  • 主站主域名:sc.jiansun.vip -> 180.97.221.140
    • 当前主站入口已经切到南京服务器
  • 旧主站域名:3d.yydd.ai -> 103.146.230.120
    • 现网行为是 301 跳转到 https://sc.jiansun.vip/
  • 资源主域名:s3.jiansun.vip -> 180.97.215.57
    • 当前对外资源默认统一使用这个域名
    • 当前已启用第一层 nginx 磁盘缓存
  • 资源备用域名:s3.yydd.ai -> 180.97.221.140
    • 当前只作为备用 / 回切域名保留,不再作为默认资源入口
  • 项目运行配置已经切到新主域名:
    • APP_PUBLIC_URL=https://sc.jiansun.vip
    • NEXTAUTH_URL=https://sc.jiansun.vip
  • 当前第一层桶缓存实施不依赖 AI 生图平台业务代码改造
    • 主要改动发生在 180.97.215.57 的入口层

当前对外链路

1. 主站访问

公网用户
  -> DNS
  -> sc.jiansun.vip
  -> 180.97.221.140(南京入口机)
  -> 当前站点入口
  -> 登录页 / 首页 / API

说明:

  • 备案完成后,主站对外入口已经从旧方案切到南京服务器
  • 仓库内没有保存南京入口机完整 nginx / FRP 配置,因此这里只记录已验证的入口行为,不强行推断内层链路

2. 旧主站域名兼容

公网用户
  -> 3d.yydd.ai
  -> 103.146.230.120
  -> nginx 301
  -> https://sc.jiansun.vip/

说明:

  • 3d.yydd.ai 现在主要承担旧域名兼容和跳转入口,不再作为默认主站域名使用

3. 资源访问

公网用户
  -> s3.jiansun.vip
  -> 180.97.215.57
  -> nginx cache(仅预览图长缓存,大对象回源)
  -> 127.0.0.1:29000
  -> FRP
  -> 192.168.58.20:9000

说明:

  • 当前默认资源入口已经切到 s3.jiansun.vip
  • 第一层缓存命中后,省掉的是 180.97.215.57 <-> FRP <-> 192.168.58.20:9000 这一整段回源开销
  • 当前入口层缓存重点服务“打开网页加载图片”这一环节,不接管源文件下载链路
  • s3.yydd.ai 仍可保留,但不再作为默认新流量入口

已验证证据

1. 公网 DNS(2026-03-19)

  • sc.jiansun.vip -> 180.97.221.140
  • 3d.yydd.ai -> 103.146.230.120
  • s3.jiansun.vip -> 180.97.215.57
  • s3.yydd.ai -> 180.97.221.140

以上结论已用公网 DoH 实测确认:

  • https://dns.google/resolve?name=sc.jiansun.vip&type=A
  • https://dns.google/resolve?name=3d.yydd.ai&type=A
  • https://dns.google/resolve?name=s3.jiansun.vip&type=A
  • https://dns.google/resolve?name=s3.yydd.ai&type=A

2. HTTP 行为(2026-03-19)

  • curl -I https://sc.jiansun.vip
    • 返回 307 到 /login,继续访问可得到 200 OK
    • 响应头包含 X-Powered-By: Next.js
  • curl -I https://3d.yydd.ai
    • 返回 301 Moved Permanently
    • Location: https://sc.jiansun.vip/
  • curl -I https://s3.jiansun.vip
    • 当前返回对象存储风格的 400 Bad Request
    • 命中上传对象路径时可返回 X-Cache-Status: HIT
  • curl -I https://s3.yydd.ai
    • 当前 HTTPS 行为不稳定,实测会出现 connection reset
    • 不应再作为默认资源入口口径

项目内对应配置

1. 主域名配置

  • docker-compose.yml
    • APP_PUBLIC_URL=https://sc.jiansun.vip
    • NEXT_PUBLIC_DINGTALK_CALLBACK_ORIGIN=https://sc.jiansun.vip
    • NEXTAUTH_URL=https://sc.jiansun.vip
  • lib/public-app-url.ts
    • 默认对外主域名是 https://sc.jiansun.vip
    • 旧域名 https://3d.yydd.ai 保留在兼容列表中

2. 对外下载链接生成

  • app/api/external/product-assets/route.ts
  • app/api/external/standard-model-white-background/route.ts

这两个外部接口都会通过 getPublicAppOrigin() 生成对外下载链接,因此默认会落到 sc.jiansun.vip。

3. 资源域名配置

  • docker-compose.yml
    • S3_PUBLIC_DOMAIN=https://s3.yydd.ai/gongxiangpan
  • lib/url-rewrite.ts
    • 仍把 s3.yydd.ai 视为当前公网资源域名

说明:

  • 以上是当前仓库里的历史代码口径,不代表 AI 生图平台本期第一层缓存实施口径
  • 本期实际实施口径已经收敛为:s3.jiansun.vip 主用,s3.yydd.ai 备用

4. 历史南京直连口痕迹

  • middleware.ts 里仍保留 http://180.97.221.140:2320

这说明:

  • 项目内还保留着南京旧 TCP 直连口的兼容痕迹
  • 但当前对外主站口径应以 https://sc.jiansun.vip 为准

口径变更说明

  • 2026-03-09 那版文档里把 103.146.230.120 写成“当前公网主入口”,这个口径现在已经失效
  • 当前正确口径应当是:
    • sc.jiansun.vip:主站主域名,当前解析到南京 180.97.221.140
    • 3d.yydd.ai:旧主站域名,当前保留跳转
    • s3.jiansun.vip:当前资源主域名,解析到 180.97.215.57
    • s3.yydd.ai:当前资源备用域名,解析到 180.97.221.140
  • 也就是说,当前已经不是“资源域名暂未切走”,而是“资源默认入口已切到 s3.jiansun.vip,s3.yydd.ai 只保留备用”

当前风险与待确认项

  • 主站入口和资源入口分属不同公网 IP,网络问题不能混看
  • 仓库内未保存南京入口机完整的现场配置
    • 如果后续要继续追 sc.jiansun.vip 的内层代理路径,需要直接登录 180.97.221.140 核对
  • s3.yydd.ai 历史引用仍存在
    • 这不会阻塞第一层桶缓存实施
    • 但后续仍需要单独治理历史 URL 残留
  • 当前第一层缓存已经扩展为“预览图优先缓存”
    • 已纳入:/gongxiangpan/uploads/ 图片、素材库预览图、product-package/*-preview
    • 仍未纳入:video-preview-*.mp4、video-clip-*.mp4、压缩包、源文件下载
    • 如果后续还要优化 image-proxy 或 proxy-media 自身处理耗时,需要单独做二期

推荐验证命令

公网 DNS 验证

curl -sS "https://dns.google/resolve?name=sc.jiansun.vip&type=A"
curl -sS "https://dns.google/resolve?name=3d.yydd.ai&type=A"
curl -sS "https://dns.google/resolve?name=s3.jiansun.vip&type=A"
curl -sS "https://dns.google/resolve?name=s3.yydd.ai&type=A"

HTTP 行为验证

curl -I https://sc.jiansun.vip
curl -I https://3d.yydd.ai
curl -I https://s3.jiansun.vip
curl -I https://s3.yydd.ai

跳转结果验证

curl -I -L https://3d.yydd.ai
curl -I -L https://sc.jiansun.vip

当前建议

  • 对外沟通时,主站统一写 https://sc.jiansun.vip
  • 旧域名 https://3d.yydd.ai 只作为兼容跳转说明,不再作为默认示例地址
  • 资源直链默认统一写 https://s3.jiansun.vip
  • https://s3.yydd.ai 只作为备用 / 回切说明,不再作为默认示例地址
  • 当前建议继续维持:
    • 180.97.215.57:只做 s3.jiansun.vip 的预览图入口缓存
    • 221.140 剩余 90G:暂不重复缓存同一层原图,后续如要继续优化,再考虑给 image-proxy / proxy-media 结果层使用