# XWorld 生产反向代理(Caddy v2,Windows)—— 域名版本:xworld.link # 用途:给另一台使用 xworld.link 域名的机器部署(主 Caddyfile 已切到 xworld.ren)。 # # 作用:对外只暴露 443(HTTPS/WSS),自动申请并续期 Let's Encrypt 证书; # 网关/CDN 两个 .NET 进程只绑 127.0.0.1,由 Caddy 反代。 # # 前置: # 1) 三个域名的 DNS A 记录都指向本服务器公网 IP: # game.xworld.link、www.xworld.link、裸域名 xworld.link(主机名 @)。 # 2) 服务器防火墙放通入站 80 与 443(80 用于 ACME 证书签发与跳转)。 # 3) 不要对外开放 5005 / 15081(它们只绑 loopback,给 Caddy 用)。 # # 启动(测试):caddy run --config Caddyfile_xworldlink # 装成服务见 README(用 NSSM 把 caddy 也注册为 Windows 服务)。 # ── 官网静态主页(被裸域名与 www 复用) ─────────────────────── # 把主页文件放到服务器的 C:\xworld\site\(须含 index.html)。 (site) { root * C:\xworld\site file_server } # ── 网关(大厅/对局,WebSocket) ─────────────────────────────── # 客户端连 wss://game.xworld.link/ws?pid=... # Caddy 的 reverse_proxy 自动处理 WebSocket Upgrade,无需额外配置。 game.xworld.link { encode zstd gzip reverse_proxy 127.0.0.1:5005 } # ── 官网主页(裸域名) ───────────────────────────────────────── # 需给 xworld.link 加一条 A 记录(主机名 @)指向本机公网 IP。 xworld.link { encode zstd gzip import site } # ── 资源 CDN(静态文件)+ 官网主页(www) ────────────────────── # 客户端按 https://www.xworld.link/game/60S/ 为资源根: # 大厅: …/game/60S/XWorld//… # 小游戏: …/game/60S/minigame///… # 而 Cdn.Runner 从其 --root 起算路径(/XWorld/… , /minigame/…), # 故必须用 handle_path 剥掉 /game/60S 前缀再反代,否则 404。 www.xworld.link { encode zstd gzip # /game/60S/* 走 CDN handle_path /game/60S/* { reverse_proxy 127.0.0.1:15081 } # 其它路径返回官网静态主页 handle { import site } }