84 lines
2.2 KiB
Caddyfile
84 lines
2.2 KiB
Caddyfile
# 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=<随机长字符串>
|