本地部署的应用服务通常通过“IP+端口号”的方式访问,随着内网服务数量增多,端口号记忆难度增加、访问体验不佳。本文基于飞牛fnOS系统与1panel面板,部署Nginx Proxy Manager(简称NPM)容器,实现内网服务的域名化代理访问,重点区分「代理局域网其他设备」与「代理宿主机本机」的操作差异,解决部署过程中的常见问题。

一、基础环境部署:1panel中部署NPM容器

相较于直接在飞牛fnOS的Docker中手动配置NPM,1panel面板支持NPM容器一键部署,操作更便捷、对新手更友好,部署步骤如下:

  1. 登录1panel管理界面(部署在飞牛fnOS系统,访问地址为http://192.168.10.48);

  2. 在1panel面板中找到Docker容器部署模块,搜索「Nginx Proxy Manager」,选择一键部署;

  3. 核心配置(域名访问必备):部署时映射宿主机80/443端口(这两个端口是HTTP/HTTPS协议的默认端口,用于接收域名请求);

  4. 访问NPM管理页:部署完成后,通过http://192.168.10.48:81访问NPM管理界面,首次登录需设置管理员账号(账号密码用于后续NPM配置管理)。

QQ截图20260206001634.png

二、核心代理配置:两种内网服务代理案例(重点区分)

本文针对两种常见内网代理场景,分别讲解配置方法,重点突出「代理宿主机本机服务」的特殊操作(与代理其他内网设备存在本质差异),避免混淆。

案例一:代理局域网内其他设备服务(IP:192.168.10.135:5666 → 域名:fnvm.hzh.cn

该场景为常规内网代理,直接使用目标设备的内网IP配置即可,步骤如下:

1. 新增代理主机规则

  1. 登录NPM管理界面(http://192.168.10.48:81),左侧导航栏点击「主机」→「代理主机」,点击右上角「添加代理主机」;

  2. 按以下要求配置核心参数(其他参数保持默认,无需额外修改): 配置项填写内容说明Domain Namesfnvm.hzh.cn需提前完成内网解析,确保域名指向NPM所在宿主机IP(192.168.10.48)Schemehttp目标服务的访问协议,此处为httpForward Hostname/IP192.168.10.135目标设备的内网IP,直接填写即可Forward Port5666目标服务的端口号,纯数字填写Websockets Support勾选适配带前端路由的服务,避免登录态丢失、页面刷新异常自定义位置(Location)不添加,保持空白无需额外配置路径,默认转发根路径即可

  3. 配置完成后,点击「保存」,代理规则生效。

QQ截图20260205233435.png

2. 补充配置(解决路径丢失问题)

若目标服务登录页路径为/login,NPM默认转发根路径/可能导致路径丢失,需添加自定义路径配置:

  1. 编辑上述代理规则,找到「自定义位置(Location)」,点击「添加位置」;

  2. 配置第一条路径:

    1. Location Path:/

    2. Forward Hostname/IP:192.168.10.135

    3. Forward Port:5666

  3. 点击「保存」,再添加第二条路径:

    1. Location Path:/login

    2. Forward Hostname/IP:192.168.10.135

    3. Forward Port:5666

  4. 再次保存,完成路径适配配置。

QQ截图20260205233443.png

案例二:代理宿主机本机服务(IP:192.168.10.48:5666 → 域名:fn.hzh.cn

该场景为重点难点:NPM容器部署在宿主机(192.168.10.48)上,代理宿主机自身的服务时,直接使用宿主机内网IP(192.168.10.48)会出现504超时错误,核心原因是Bridge网络模式下,容器与宿主机属于不同网段,需使用Docker网关IP进行转发。

1. 问题排查(前置准备)

若按案例一的方法配置(转发IP填写192.168.10.48),访问fn.hzh.cn会提示504超时,但直接访问http://fn.hzh.cn:5666/可正常打开,需先完成以下排查,确认基础配置无误:

  1. 验证域名解析:在访问设备(电脑/手机)终端执行命令nslookup fn.hzh.cn,若输出Address为192.168.10.48,说明解析正常;若解析异常,检查路由DNS设置及ADGuard DNS重写规则(确保*.hzh.cn解析到192.168.10.48);

b54e09.jpg
  1. 验证NPM端口监听:在fnOS宿主机终端执行命令ss -tulpn | grep :80ss -tulpn | grep :443,若输出包含nginx进程,说明80/443端口监听正常;若无输出,重启NPM容器或排查端口占用问题;

  2. 验证容器连通性:进入NPM容器终端,执行命令curl http://127.0.0.1:5666,若输出目标服务HTML内容,说明容器与宿主机服务连通正常,问题出在转发IP配置。

85cca92df5d34fc3ba56b2389706ff5f.jpg

2. 核心配置(使用Docker网关IP转发)

  1. 获取Docker网关IP:在fnOS宿主机终端执行命令docker network inspect bridge | grep Gateway,输出结果中Gateway对应的IP(通常为172.17.0.1),该IP是Bridge网络下容器访问宿主机服务的唯一正确路径;

  2. 新增/编辑代理主机规则: 配置项填写内容关键说明Domain Namesfn.hzh.cn仅填写该域名,不添加端口、不使用通配符Schemehttp与目标服务协议一致,不勾选HTTPS(避免重定向异常)Forward Hostname/IP172.17.0.1核心差异点:替换为Docker网关IP,而非宿主机内网IPForward Port5666目标服务端口,纯数字填写,不带任何符号Websockets Support勾选仅勾选此项,不勾选其他额外选项(如Cache Assets)自定义位置(Location)不添加,保持空白避免多余配置导致路径转发异常

  3. 保存配置后,打开浏览器无痕模式访问http://fn.hzh.cn,即可正常代理宿主机服务(NPM容器通过172.17.0.1:5666访问宿主机目标服务,为Bridge网络下的正确路径)。

三、通用测试方法(排查代理异常)

无论哪种代理场景,配置完成后可通过以下步骤测试转发效果,快速定位问题:

  1. 宿主机测试转发:在fnOS宿主机终端执行命令curl -v http://192.168.10.48(对应NPM 80端口),模拟浏览器请求; 若输出目标服务HTML内容:说明NPM转发正常,问题出在浏览器(清除缓存或用无痕模式访问);

  2. 若输出504/404或NPM默认页面:说明代理规则配置异常,重新检查转发IP、端口及路径。

  3. 容器内测试连通性:NPM容器镜像精简,无ping/telnet命令,可通过curl -v http://目标IP:端口测试(如代理其他设备用curl -v http://192.168.10.135:5666,代理本机用curl -v http://172.17.0.1:5666)。

四、补充说明:Bridge模式与Host模式差异

针对代理超时问题,可通过切换NPM容器网络模式解决,两种模式差异如下:

  • Bridge模式(默认):NPM容器处于独立的172.17.0.0/16网段,与内网192.168.10.0/24为不同网段,可能被防火墙拦截,需使用网关IP代理本机;

  • Host模式:NPM容器共享宿主机网络(192.168.10.48),相当于以宿主机身份访问内网设备,无网段拦截问题,代理所有内网服务可直接使用目标IP,无需纠结网关配置。

提示:超时问题优先切换为Host模式解决,无需复杂调整防火墙设置。

五、总结

  1. 核心差异:代理局域网其他设备服务,直接使用目标设备内网IP;代理宿主机本机服务,使用Docker网关IP(通常为172.17.0.1);

  2. 配置要点:所有子域名(*.hzh.cn)需解析到NPM宿主机IP,新增代理服务仅需在NPM中添加对应规则,复用80/443端口;

  3. 异常排查:超时问题优先切换Host模式,转发异常优先测试curl连通性,路径丢失需添加自定义位置配置;

  4. 可扩展性:该架构支持无限个内网服务代理,后续新增服务重复对应案例的配置步骤即可。