搞定公网访问
如果纯是局域网访问, Home Lab 上很多服务未免没有发挥多少用处。由于租房也不想折腾公网 IP,所以采用 FRP 内网穿透的方案来进行。
这篇文章 https://juejin.cn/post/7024392277380300808 就完美匹配我的需求,按照同样的方法,就可以实现通过二级域名访问 Home Lab 各个不同的服务了。
需求是有一个域名 example.com,希望通过不同的二级域名来访问不同的内网服务,例如 jellyfin.example.com。而且这些域名最好都有 https,直接在 Let‘s Encrypt 可以搞到通配符证书。
实现上,需要有一台公网服务器。思路是,公网服务器入口是 nginx,nginx 中配置规则,对 *.example.com
都映射到 frps , frps 再与 frpc 进行通信,frpc跑在家用服务器上,根据域名,frpc 会将请求发到不同的端口。
这种方案的好处,一个是二级域名清晰便于记忆,而且通过 nginx 转发,都是 80 端口,不需要区分乱七八糟各种端口,并且都有 https;另一个好处是配置完之后改动容易,要加新的服务,其实只需要调整 frpc 的配置即可。因为公网服务器的 nginx 是通配符转发到 frps 的,而且 https 也是通配符证书,所以公网服务器完全不需要后续调整了,基本上家庭服务器启动新的服务之后,只需要改 frpc 配置这一个地方,加一项新的端口规则就好。
另外有一点是是公网服务器的 nginx 配置文件中,通配符映射放在最后,在前面可以手动指定一些别的映射规则,例如 frps 自带一个 web UI 的后台,这个是运行在公网服务器上的,所以可以在 nginx 中指定一项二级域名,用来访问这个后台。