Caddyfileit.lab-terminal.tech { # Blog handle /blog/* { uri strip_prefix /blog reverse_proxy localhost:xxx } # ntfy handle /notify/* { uri strip_prefix /notify reverse_proxy localhost:xxx } # APRS API handle /aprs/* { uri strip_prefix /aprs reverse_proxy localhost:xxx } # Trilium handle / { reverse_proxy localhost:xxx } }
Caddy 的 handle 指令是 按顺序匹配 的。一旦某个 handle 块匹配成功,后续的 handle 就不会再被检查。 而 / 路径会匹配 所有请求(因为所有 URL 都以 / 开头),所以: 当用户访问 https://it.lab-terminal.tech/blog/hello 第一个 handle / 就匹配成功了 ✅ 请求直接被转发到 localhost:8080(Trilium) 后面的 /blog/、/notify/ 等规则 完全不会生效!
✅ 正确顺序:具体路径在前,兜底路径(/)在最后
本来呢,我就是这么想的,但是发现在Caddyfile配置完以后,会出现白屏的情况, 原因就是我的后端并没有做URL绑定。
研究一会儿发现有一个新的方法:
Caddyfile# Blog blog.lab-terminal.tech { reverse_proxy localhost:xxx } # api #api.lab-terminal.tech { # reverse_proxy localhost:xxx #} # 主站放 Trilium it.lab-terminal.tech { reverse_proxy localhost:xxx }
然后在我的域名控制台设置域名解析,
以上的这些二级域名全部映射到我这个服务器的IP上。
然后Caddy会定向,并做反代。
问题解决
本文作者:Maxwell
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明出处!