这台机器上跑着不止一个站点。博客在 443,其余服务各占一个子域名,全部走 https,全部从同一张证书进来。这组文档把它们逐个说清楚:做什么用、从哪进、有什么坑。

拓扑先讲清楚

公网这台是 RainYun 的 VPS(Debian 13),它干三件事:

  1. nginx 守 443,是整站的 TLS 终点:按子域名分流,静态的博客自己发,其余反代到本机端口。80 端口只负责跳转和证书校验,不提供内容;
  2. frps 监听 7000,接受内网机器的反向连接,把 5001–5008 这些端口分给不同服务;
  3. OpenWebUI 容器,绑在 172.17.0.1:8081,不出公网,由 nginx 反代。

真正跑业务的是内网那台机器,它用 frpc 主动连出来。所以「服务不在这个 IP 上」这件事很关键——重启公网这台,业务不会挂;反过来,内网那台掉线,前端页面会全部变成 502。这个博客是例外,它是纯静态文件,就在本机。

一览

端口只是内部连接方式,对外一律用域名,点进去就能开。

地址 项目 用途 后端
zxtweb.fun 博客 就是这一站 本机静态文件
game.zxtweb.fun 对决大厅 所有对战模块的入口、房间人数、登录状态 :5004
game.zxtweb.fun/chem 化学对决 化学式配平抢答,抢分、连击、团队赛制 :5004
game.zxtweb.fun/maze 迷宫战场 俯视角射击,反弹弹道、双弹种、炸药桶,最多 5v5 :5004
game.zxtweb.fun/arena3d 3D 竞技场 第一人称多人射击,30Hz 服务端权威判定,手机可玩 :5004
game.zxtweb.fun/admin 对决后台 上传/删除游戏模块、重启房间服务、看账号 :5004
town.zxtweb.fun 像素小镇 与现实时间同步的小镇,居民自行走动 :5008
chat.zxtweb.fun Open WebUI 多模型对话、知识库、多用户权限 :8081
bot.zxtweb.fun AstrBot 控制台 对话机器人的插件、技能、会话记录 :5002
files.zxtweb.fun 文件站 网页界面,浏览和下载 :5003
files.zxtweb.fun/webdav/ WebDAV 挂载点,给访达/资源管理器/手机用 :5003
img.zxtweb.fun 图床与素材 截图、证书、镜像的公开目录,可直接外链 :5007
ssh -p 5005 SSH 跳板 进内网那台机器(不走 https) :5005
ssh -p 5006 SSH / MC Minecraft 所在的那台 Ubuntu(不走 https) :5006

关于那张证书

七个域名共用一张 Let’s Encrypt 证书,自动续期,续期后自动 reload nginx。http:// 一律 301 到 https://,并且开了 HSTS——浏览器五分钟内就会记住「只走 https」。

分册

  • 对决平台 —— 四个游戏怎么共用一套账号
  • 工具链 —— WebUI、文件库、图床、机器人
  • 运维设施 —— frp 隧道、跳板、状态页、端口管理