# termi-blog / tohka Caddyfile 模板 # # 说明: # - 这是“参考模板”,不是已部署配置 # - 适合 tohka 上“宿主机大 Caddyfile -> localhost 端口 -> Docker 容器”的模式 # - 默认假设: # - frontend 绑定到 localhost:4321 # - admin 绑定到 localhost:4322 # - backend 绑定到 localhost:5150 # ----------------------------- # 方案 A:推荐,子域名分流 # ----------------------------- blog.init.cool { import common reverse_proxy http://localhost:4321 } admin.blog.init.cool { import common # 推荐:admin 域名整体走 TinyAuth / Pocket ID 保护 # tohka 现成片段会转发: # Remote-User / Remote-Name / Remote-Email / Remote-Groups import tinyauth # admin 静态资源与后台 API 都走同一受保护域名 # 如果 backend 开启了 TERMI_ADMIN_PROXY_SHARED_SECRET, # 记得在转发 /api 到 backend 时补一个共享密钥头,避免直接伪造 Remote-User。 handle /api/* { reverse_proxy http://localhost:5150 { header_up X-Termi-Proxy-Secret {$TERMI_ADMIN_PROXY_SHARED_SECRET} } } handle { reverse_proxy http://localhost:4322 } } # 前台公开 API 可单独暴露(评论 / 搜索 / AI 问答等) api.blog.init.cool { import common reverse_proxy http://localhost:5150 } # ----------------------------- # 方案 B:单域名 + 路径分流 # ----------------------------- # # 注意: # 1. /admin 方案要求 admin 构建时设置: # VITE_ADMIN_BASENAME=/admin # 2. /admin 使用 handle_path,进入 admin 容器前会去掉 /admin 前缀 # 3. /api 不要用 handle_path;backend 当前路由本身就包含 /api 前缀 # 4. 如果 /admin 也要调用受保护 API,需要同时把 /api 接到 backend 并加 tinyauth init.cool { import common handle_path /admin* { import tinyauth reverse_proxy http://localhost:4322 } handle /api* { import tinyauth reverse_proxy http://localhost:5150 { header_up X-Termi-Proxy-Secret {$TERMI_ADMIN_PROXY_SHARED_SECRET} } } handle { reverse_proxy http://localhost:4321 } } # 部署时 backend 记得配套: # TERMI_ADMIN_TRUST_PROXY_AUTH=true # TERMI_ADMIN_LOCAL_LOGIN_ENABLED=false # TERMI_ADMIN_PROXY_SHARED_SECRET=<随机长字符串>