自建服务别再 http 裸奔:用反向代理给 NAS 和容器统一上 HTTPS

服务能访问之后,明文才是真隐患

前面聊过用 DDNS 给家里服务起固定名字、用 VPN 做远程访问,这些解决的是能不能连上。但很多人忽略下一步:连上之后传的是不是明文。只要地址栏还是 http 开头,你输的账号、密码、甚至相册里的内容,在传输路上就是 plaintext,同一局域网里被人抓个包就能看个精光。给服务上 HTTPS,不是折腾证书玩票,而是把谁都能读变成只有对端能解。

为什么一台服务配一个证书会累死

家里跑起来的服务往往不止一个:相册、下载、笔记、密码库、反代后台……如果每一个都自己去申请、部署、续期证书,光是记到期日就够喝一壶。更干净的做法是在最前面放一个反向代理,由它统一终结 TLS:外面所有请求先到反代,反代用一张或一组证书完成 HTTPS 握手,再以内部 http 转发给后面的真实服务。证书只在反代这一处管理,后端服务甚至可以完全不碰加密,省心也少出错。

反向代理选哪个

三款最常见。Caddy 的最大卖点是自动申请并续期 Let’s Encrypt 证书,写几行配置就能 https 跑起来,新手最省心。Nginx Proxy Manager 带了图形界面,添加主机、上传证书、开强制跳转都点几下完成,适合不想碰配置文件的朋友。Traefik 更偏容器原生,能和 Docker 标签联动自动发现服务,家里跑了一大堆容器时最顺手。三者都能做,差别在你愿不愿意写配置。

证书到底从哪来

如果你的服务要对外,比如给家人用、或自己在外访问,走公网域名最正规的是 Let’s Encrypt 免费证书;没有 80 端口做验证时,用 DNS 验证方式在域名解析里加一条 TXT 记录照样能签,Caddy 和 Traefik 都支持。如果服务只在内网用,其实没必要追公网证书,用自签证书或自建私有 CA 即可,只是首次访问浏览器会提示不受信,加进信任列表就好。关键区分是:对外才要公网可信证书,纯内网用私有 CA 足够,别混为一谈。

一个反代管所有的正确姿势

典型做法是给每个服务一个子域名:photo.home、dl.home、note.home,全部指到反代,由反代按域名分流到后端不同端口。同时打开强制 HTTPS 跳转和 HSTS,让 http 请求自动升级成 https,避免有人手滑用明文打开。再强调一次安全边界:反代后台、各服务管理页这类高权限入口,尽量只放内网或只走 VPN,别一股脑映射出去;否则证书再漂亮,后台被人登了也是白搭。

容易翻车的几个点

其一,证书忘了续期。用 Caddy/Traefik 自动续,或用脚本配合 cron 定时刷新,别靠人工记。其二,反代之后后端日志里全是反代自己的 IP,要在反代上配置透传真实客户端 IP(X-Forwarded-For),否则限速、审计、封禁都失效。其三,混用 http 和 https 资源会触发浏览器混合内容告警,页面能开但部分资源被拦,统一成 https 就干净了。

小结

自建服务上 HTTPS,核心是用反向代理统一终结 TLS,而不是每个服务各管各的证书。对外走 Let’s Encrypt、纯内网用私有 CA,配好子域名分流、强制跳转和自动续期,再把管理后台收进内网或 VPN。这样账号密码和隐私数据在传输路上才是加密的,而不是裸奔。

这篇文章让你感觉:
本文为原创文章,转载请注明出处。
作者:孙亮亮
原文链接:https://so.sunliangliang.cn/post/5026.html

还没有评论,快来抢沙发吧!

发表评论

😀 😂 🤔 👍 ❤️ 🔥 🎉 😢 🙏