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