只对外开分享链接:用 Caddy 前置鉴权把私有服务露一条缝
来源:dataswamp.org — 2026-10-21
📋 概述
Solene 的自托管服务大多只能过 VPN 访问,但 Immich 的相册和 Nextcloud 的文件又需要分享给没有 VPN 的人。她的办法是用 Caddy 反向代理,只放行携带有效分享密钥的请求,其余一律返回 404。实现上没用 forward_auth 指令,而是写成 reverse_proxy 加 handle_response 的长格式,因为需要改写检查请求的 URL,还要把非 2xx 状态码当作成功信号。
🔑 核心要点
- 鉴权服务器就是服务自己:多数应用都有某个路由会根据密钥有效性给出不同响应,先问一句「这个链接有效吗」再决定转发
- Immich 里 /api/users/me?key=... 返回 403 表示密钥有效、401 表示无效或过期,因为分享链接无权读用户资料
- 公开站点只按严格匹配暴露访客必需的少数路由,其余 URL 统一 404,连背后跑的是什么软件都看不出来
- 完整服务仍只经 VPN 可达,公开侧是另一套实例;若共用一套 Caddy,必须给内部 vhost 加 IP 限制
- 局限也很诚实:Immich 那个 403/401 语义是权限检查的副作用而非为此外露的接口,将来版本一变分享就会全 404
💡 金句
every other URL gets the same 404, so a visitor cannot even know which software is behind
👍 0
👎 0
← 返回 Lobsters 首页