家庭服务器从入门到精通 · 第 5 篇· NPM反向代理从安装到起飞:一条命令搞定HTTPS
家庭服务器从入门到精通 · 第 5 篇· NPM反向代理从安装到起飞:一条命令搞定HTTPS本文是「家庭服务器从入门到精通」系列文章,记录了从零搭建家庭服务器的完整过程。系列:家庭服务器从入门到精通 · 第 5 篇作者:妍杰丽云标签:NPM反向代理SSL1PanelDocker到目前为止,你已经能让外网访问家里的某个端口了。但家里跑着三四十个 Docker 服务——导航站、聊天室、Jenkins、AI 面板——如果每个都在路由器上开一个端口映射,你得配几十条规则,记几十个端口号,还全是 HTTP 明文传输。NPM 就是来解决这个"幸福的烦恼"的:一个端口进,按域名分发给不同服务,就像一栋大楼的前台——访客只认门牌号,前台负责带你去对应的房间。一、为什么需要反向代理回顾一下前几篇的成果:第 3 篇:yourdomain.top→ 公网 IP(DDNS)第 4 篇:路由器 888 → NPM:30080,8443 → NPM:30443现在访问 `https://你的域名 能到达 NPM。但你有几十个服务:导航站: 内网服务器:5000 Jenkins: 内网服务器:8080 VoceChat: 内网服务器:3000 QwenPaw: 内网服务器:9090 ... ...(还有 34 个)如果每个服务都在路由器上开一个端口映射,你得配 38 条规则,记 38 个端口号。而且大部分服务的端口还不是 HTTPS——外网明文传输,不安全,而且路由器一般配置的端口映射也是有限的,我家路由器只能配置32条。**NPM(Nginx Proxy Manager)**就是来解决这个问题的。它的核心能力:一个端口进,按域名分发给不同内网服务。外网请求 │ ├─ nav.yourdomain.top:8443 → NPM → 转发到 :5000(导航站) ├─ jenkins.yourdomain.top:8443 → NPM → 转发到 :8080 ├─ chat.yourdomain.top:8443 → NPM → 转发到 :3000 ├─ ai.yourdomain.top:8443 → NPM → 转发到 :9090 └─ ...路由器只需要配两条端口映射。所有流量的分发在 NPM 内部完成。二、NPM 安装在哪个设备?关键决策:NPM 装在哪台机器上?我有三台"设备"(见第 1 篇)。路由器的端口映射只能指向一个 IP,所以 NPM 必须装在要被映射的那台机器上。候选能不能装 NPM理由NAS ()能,但不推荐NAS 是数据心脏,尽量少暴露公网流量AI Server (AI 服务器)能但它主要负责 AI,不想掺杂网络流量webServer (内网服务器)✅最佳本身就是对外服务机,40+ Docker 容器都在上面路由器端口映射也是指向 内网服务器。链路一致:公网 → 路由器:8443 → 内网服务器:30443 → NPM 容器 → 分发 公网 → 路由器:888 → 内网服务器:30080 → NPM 容器 → 分发三、Docker 部署 NPM在 webServer (内网服务器) 上,用 1Panel 或者 docker-compose 部署。我用的 1Panel,在应用商店搜nginx-proxy-manager一键安装,配置好容器和宿主机端口。宿主机端口容器端口用途3008080HTTP 入口30443443HTTPS 入口30081