我理解的是,你这里的 nginx-proxy-manager 是监听了云服务器的 80/443 端口,然后你的域名
xxx.domain.com 解析到了你的服务器。你通过域名来访问你家里的 jellyfin 和 3000 端口的聊天服务。现在问题是,现在既可以用 ip:port 访问服务,也可以通过
domain.com 访问服务。
问题 1: frp 也是可以设置监听 127.0.0.1 这个地址的,这样外部就没法通过公网 IP+端口的方式访问了。或者你在云服务器的安全组里面设置一下规则,只允许特定的端口。
问题 2: 聊天服务监听的 127.0.0.1 是宿主机的 127.0.0.1 ,然后 host.docker.internal 指向是 docker 网桥在主机上的 IP ,两个 IP 不一样,所以访问它不通。
问题 3: 能做到,不一定要都用 docker 来搭建服务。
---
建议,你可以把 nginx-proxy-manager 改成使用 host 网络模式,和宿主机共用同一个网络命名空间,这样容器就能够直接访问宿主机上的网络了。
然后其他的服务在运行的时候,你就都监听 127.0.0.1 ,在 nginx-proxy-manager 里面配置后端的时候,统一都填写 127.0.0.1 。