ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Nginx Proxy Manager实战:告别IP加端口,统一内网服务域名

Nginx Proxy Manager实战:告别IP加端口,统一内网服务域名 1. 先别急聊聊这段痛苦的IP加端口日子我猜你和我一样电脑上存着一大堆书签全是类似192.168.1.5:3000、192.168.1.5:8080、192.168.1.8:5601这样的地址。每次想打开个服务都得先回忆那串数字要不就在路由器后台翻半天。家里的 NAS、开发机上的 Grafana、办公室里的 Ollama、虚拟机里跑的测试环境每个都占一个端口时间一长自己都分不清哪个端口对应哪个服务。更难受的是有的服务还会因为端口冲突互相打架——你启动了一个新容器提示端口被占你查来查去发现是另一个早已忘记的服务还挂在那个端口上。还有手机上访问局域网服务每次都要手动输入一长串 IP 加端口用完之后浏览器历史记录里全是乱七杂八的数字。我自己的办公室环境就是典型一台装了 Proxmox 的服务器上面跑着十几个虚拟机其中有 GitLab、Jenkins、Ollama、Open WebUI还有一两个练手的代码仓库。一开始大家访问全靠 Excel 表格维护的端口对照表截图发群里。直到某天我实在忍不了花了一个周末把 Nginx Proxy Manager下称 NPM部署起来把所有服务全部收敛到http://git.lab、http://ollama.lab、http://grafana.lab这样的域名下整个局域网访问体验完全不一样了。这篇博文就是把我那次改造的过程、踩过的坑、以及后来的优化经验完整分享给你。内容不挑系统Windows、macOS、Linux 都适用只要你手里有一台能跑 Docker 的机器即可。哪怕你从来没配过 Nginx跟着操作也能跑起来。2. 为什么说这个方案超简单NPM 到底是什么样的存在2.1 反向代理不是魔法就是个大堂前台先说个概念别被反向代理这四个字吓到。你想像一下一个大公司有很多部门服务每个部门有自己的分机号端口。外人打进来如果直接拨分机得记一大堆号码有了前台反向代理你只拨总机转一个分机号前台帮你转接。NPM 就是那个总机前台。传统做法是手写 Nginx 配置文件每个站点写一个server{}块改完还nginx -s reload。对于只想在局域网里访问几个服务的人来说这有点过于硬核。你得记路径、管语法、注意分号一个空格错了页面就 500。我当年刚接触时没少在这上面翻车。NPM 把这一切变成了网页上的表单。你告诉它把 http://grafana.lab 转发到 192.168.1.50:3000它自己生成 Nginx 配置、自动重载、管理证书你甚至不用碰一次终端。所以标题说超简单一点也不夸张。它适合的场景非常明确内网服务多、端口难记、偶尔需要加个 HTTPS、还想顺便做访问控制——这就是 NPM 的主场。2.2 为什么不是直接改 Nginx也不是用 1Panel我知道很多人在用 1Panel 这类面板它也集成反向代理功能。我这里不是说 1Panel 不好而是两个工具的定位不同。1Panel 更像一个服务器管理全家桶反代只是它的众多功能之一NPM 则专职做反代和证书管理界面更聚焦配置项也更贴合代理场景。如果你的服务器上已经有 1Panel 管着很多网站那直接在面板里配反代完全没问题但如果你只是想给局域网里的 Docker 服务做个统一入口NPM 更轻、更快、也更符合搞完就忘的心态。另外还有一个常见替代品是 Traefik它靠标签自动发现容器看起来很科技但配置方式对新手不太友好要理解动态配置中间件入口点这些概念。我曾试用过一次折腾两小时没完全搞定标签语法而 NPM 十分钟就让我看到了效果。所以结论很简单想要直观、快、稳选 NPM想折腾、想要完全自动化和极致的灵活再考虑 Traefik。2.3 它的核心功能一览NPM 主要提供四类能力我按使用频率排序Proxy HostsHTTP/HTTPS 反向代理浏览器访问页面、调用 API 都靠它StreamsTCP/UDP 端口转发比如把服务器的某个端口转发到另一台机器的 SSHAccess List访问控制列表限制哪些 IP 能访问还能加登录认证SSL Certificates证书管理既可以用内网自签证书也可以接入正规证书如果你有后面我会逐个讲实际用法。3. 动手之前先想清楚这几件事3.1 域名方案没有公网域名用 hosts 和本地 DNS局域网里没有注册域名的必要但我们依然可以借用域名格式。比如约定所有内网服务统一使用*.lab后缀lab代表局域网随便取的于是grafana.lab、ollama.lab都是合法的主机名。这些名字不会和公网域名冲突也容易记忆。关键在于怎么让电脑把这些名字解析成你的服务器 IP。两种常用办法改 hosts 文件每台电脑的C:\Windows\System32\drivers\etc\hostsWindows、/etc/hostsmacOS/Linux里加一行192.168.1.50 grafana.lab ollama.lab。适合设备少、不常变的场景。搭一个内网 DNS用 AdGuard Home 或 Pi-hole 这类工具统一管理解析。设备少用 hosts设备多了强烈建议上 DNS手机和智能设备改一下路由器 DNS 指向就能全局生效。后面我单独开一章详细讲。这里有个细节hosts 文件不支持泛解析也就是你没法写一行*.lab让它通配所有子域名。每多一个服务就得手动加一行。如果你预计将来会不断加新服务直接上 DNS 方案会更省心。3.2 安装 Docker 和规划网络NPM 官方推荐用 Docker 部署。以 Debian/Ubuntu 服务器为例装 Docker 和 Compose 插件sudo apt update sudo apt install docker.io docker-compose-v2 -y sudo systemctl enable --now dockerWindows 用户可以用 Docker DesktopmacOS 同理。NPM 容器最常见的运行方式是单独挂一个 Docker 网络或者干脆使用host网络模式直接共享宿主机的网络栈。我个人建议NPM 单独容器跑在一个自定义 bridge 网络里不需要 host 模式。因为 NPM 需要监听 80、443 和 81 端口bridge 模式通过端口映射也能实现同样的效果而且你可以灵活控制到底暴露哪些端口。不过这里有个坑我后面会单独说如果 NPM 用 bridge 默认网络它默认没法直接用容器名访问宿主机上的服务。解决办法有两个要么在 Compose 里把 NPM 和你的服务放进同一个自定义网络要么在转发目标里填宿主机的实际 IP。我自己是把所有需要反代的服务和 NPM 放进了同一个网络webnet这样容器之间可以直接用服务名互相访问配置反代时写http://nginx-app-1:8080这种容器名即可干净利落。3.3 提前体检别让端口纠纷耽误时间动手前先查一下宿主机上 80、443、81 是否被占用。我在本地笔记本第一次部署时就撞上了 IIS 占着 80NPM 容器一直起不来。检查端口占用不同系统姿势不同Linuxsudo ss -lntp | grep -E :80|:443|:81Windowsnetstat -ano | findstr :80macOSlsof -i :80看到已经有的监听进程先关掉或者改端口。这里有个常见误区热搜里也提到0.0.0.0:80 被占是所有地址的 80 端口都没占了吗。答案是当某个服务绑定了0.0.0.0:80它意味着占用了本机所有网卡的 80 端口此时另一个服务即使只绑定某个特定 IP 的 80 端口也会冲突。所以查端口时如果看到0.0.0.0:80或:::80基本就是全局占用得先处理它。4. 十分钟部署 Nginx Proxy Manager实操记录4.1 用 Docker Compose 一键拉起我的部署目录是/opt/npm里面放一个docker-compose.ymlversion: 3.8 networks: webnet: external: true services: npm: image: jc21/nginx-proxy-manager:latest container_name: npm restart: unless-stopped networks: - webnet ports: - 80:80 - 443:443 - 81:81 volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt environment: - ACME_EMAILadminexample.com注意我在 Compose 里用了外部网络webnet。如果你还没创建这个网络先执行docker network create webnet然后把你的其他服务也接入webnet这样 NPM 就能用容器名互相访问。如果你的服务是此前已经创建好的容器需要重新连接网络docker network connect webnet 容器名这点很重要后面配置反代目标时你会感谢这个设计。4.2 启动与初始化拉起来之后cd /opt/npm docker compose up -d浏览器访问http://服务器IP:81第一次会要求注册管理员账号。默认初始账号是adminexample.com/changeme第一次登录会强制让你改邮箱和密码。改完就进入主界面左侧菜单就是那四项Proxy Hosts、Redirection Hosts、Streams、Access Lists。顺手看一眼日志确认没有报错docker logs -f npm如果你看到类似[6/6] Starting Nginx或者ok的消息就说明基础环境已经就绪。4.3 界面地图五分钟熟悉布局主界面里真正常用的就这几个地方Proxy Hosts这里的Add Proxy Host按钮你每天都会点进去后有五个 TabDetails、SSL、Advanced、Custom Nginx Configuration、LocationStreams做 TCP/UDP 转发Access Lists把规则集中管理应用到任意主机SSL CertificatesPEM 格式的证书、密钥可以从这里导入也可以申请内置证书说白了绝大多数配置都在Add Proxy Host这个弹窗里。后面每个场景我都按这个弹窗给你走一遍。5. 第一次真的上手给一个普通网页服务挂上域名5.1 自己写个小服务做实验动手时建议先用一个无风险的测试服务练手。比如我们在服务器上跑一个最简单的 Nginx 容器docker run -d --name test-web --network webnet -p 8888:80 nginx:alpine这是一个返回默认欢迎页的 Nginx 容器映射到宿主机 8888 端口。在没配 NPM 之前你得访问http://服务器IP:8888才能看到它。5.2 打开 Add Proxy Host 面板逐项填清楚登录 NPM点Proxy Hosts-Add Proxy Host弹窗里Domain Names填test.labScheme选http因为上游服务默认就是 httpForward Hostname / IP填test-webForward Port填80勾选Block Common Exploits和Websocket Support——前者加一些 Nginx 安全过滤规则后者让 WebSocket 长连接正常工作填完点 Save。如果一切正常你的浏览器访问http://test.lab就能看到测试页了。当然前提是你的 hosts 文件已经加了192.168.1.x test.lab或者 DNS 已经解析。这里有个关键细节NPM 容器和 test-web 容器必须在同一个 Docker 网络里才能直接通过容器名test-web访问。如果你没在同一网络这段配置会触发后面的 502 错误——遇到别慌去看第 8 节。5.3 为什么我建议用容器名而不是 IP有朋友觉得那我直接填192.168.1.50:8888不就行了何必非用容器名。实话讲在 NPM 里填宿主 IP 确实也能通但有个问题如果服务容器迁移了、端口变了、或者 Docker 重启后 IP 变了你还得回来改 NPM 配置。容器名在 Docker 网络内固定不变填一次就永远有效。打个比方容器名相当于员工的花名IP 相当于员工的工位号。花名不会变工位号今天在这明天在那。所以凡是跑在 Docker 里的服务我都建议把 NPM 和目标容器放在同一网络直接用容器名转发。5.4 顺手开启 WebSocket 的必要性如果你以后要反代那些带实时交互功能的应用——比如 Jupyter、VS Code Server、Open WebUI 这类聊天界面——没勾 WebSocket 可能导致页面能打开但聊天一直转圈、或者文件实时同步总是断。我的经验是无条件打开因为开启后不会对普通 HTTP 请求造成负面影响却能让长连接场景免遭折腾。勾选一次省心很久。6. 三个常见实战场景的完整配置6.1 场景一给 Grafana 或 Ollama 这类开发工具挂域名假设你的开发机里起了 Grafana 在192.168.1.50:3000Ollama 在192.168.1.50:11434。现在的痛点是一个给 UI 用一个给 API 用端口完全不同。用 NPM 后新建 Proxy Hostgrafana.lab-http://192.168.1.50:3000再建一个ollama.lab-http://192.168.1.50:11434注意ollama.lab不是给浏览器写聊天框用的而是给后端代码或命令行配置 base_url 用的。比如我在 Python 脚本里把 Ollama 的地址从http://192.168.1.50:11434改成http://ollama.lab代码迁移后完全不用改地址配合 DHCP 固定 IP 更是稳如老狗。如果 Ollama 容器跑在 Docker 里直接用容器名http://ollama:11434。只要 NPM 和它一个网络就不需要关心 Ollama 映射在宿主机的哪个端口上。这里有个好处你甚至可以把容器端口映射去掉让服务只对 Docker 网络可见对外完全由 NPM 统一出口。这样端口扫描脚本扫不到它能减少很多无意义攻击面。关于大模型推理服务很多朋友在局域网里跑 DeepSeek 这类模型的本地部署类似 deepseek harness 离线的场景前端负载均衡需要 NPM还能给后续多个推理节点做按路径分发。你只要建模型A.lab指向192.168.1.51:8000建模型B.lab指向192.168.1.52:8000多个模型服务互相隔离又统一入口排查问题会非常直观。6.2 场景二同一台机器多环境的多站点隔离做开发的朋友经常在本地跑前端 后端 数据库或者虚拟机里一套、物理机一套。假如你有三个项目同时开发传统的localhost:3001、localhost:3002、localhost:3003切来切去非常痛苦。用 NPM 之后project-a.lab-http://127.0.0.1:3001前端api.project-a.lab-http://127.0.0.1:8080后端接口project-b.lab-http://虚拟机IP:3100这样每个项目都是独立的域名调试前端的时候再也不怕 cookie、localStorage 跨端口串数据。对死磕跨域问题的开发来说端口隔离和域名隔离体验完全不同端口不同导致的前端跨域问题会经常出现统一走 80/443 后 cookie 的 Domain 属性能更干净地隔离踩过的都懂。如果服务在本地开发机上NPM 也在同一台机器转发地址可以直接写http://127.0.0.1:3001。但有一种情况例外NPM 跑在 Docker 里你要转发的服务跑在宿主机上此时填127.0.0.1通常不通因为容器网络和宿主网络是隔离的要填宿主机的实际内网 IP比如http://192.168.1.50:3001。这是新手最容易踩的坑记住这个区分。6.3 场景三用 Stream 转发 SSH让内网服务安全暴露NPM 的Streams模块很适合做 TCP 转发。比如你不想把 SSH 端口22裸露在防火墙外可以先把宿主机的 SSH 改到2222然后用 NPM 做一个 Stream监听2222转发到localhost:22。这样你从外面访问 NPM 的2222就等于访问服务器的 SSH。好处是规则统一在 NPM 面板里管理还可以配合 Access List 做来源 IP 限制比裸奔 22 端口安心得多。创建方式进入Streams-Add StreamIncoming Port 写2222Forward Host 写127.0.0.1或容器名Forward Port 写22保存后防火墙里放行2222注意Stream 转发不能复用已经监听的端口。如果某个端口被 Nginx 或 NPM 本身占用了再建 Stream 会报错。常见做法就是给 Stream 留一批独立的高位端口比如2200-2300每个端口对应一台机器的 SSH再由 NPM 统一管理。至于要不要把所有 Stream 端口都暴露到公网这属于安全规划范畴我建议只在信任网络里这么做。7. 局域网 DNS 怎么搭从 hosts 到一劳永逸7.1 每台电脑改 hosts 的操作细节如果你只有两三个设备改 hosts 是最快的方式。Windows 上用管理员身份打开记事本编辑C:\Windows\System32\drivers\etc\hosts追加一行192.168.1.50 test.lab grafana.lab ollama.labmacOS/Linux 改/etc/hosts后刷新 DNS 缓存macOSsudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderLinuxsudo systemctl restart systemd-resolved或sudo resolvectl flush-caches这里提醒一句hosts 文件不支持*.lab的泛解析。每新增一个服务都要手动加一行。所以我在本地机器上维护了一个hosts片段每次加服务就追加一行定期清一次。后来服务超过 10 个我彻底弃用改 hosts转用下面这套方案。7.2 用 AdGuard Home 做内网 DNS解决全家设备访问我的方案是在服务器上跑 AdGuard Home让它和 NPM 在同一 Docker 网络里只开 53 端口DNS和 3000 管理端口。配置步骤添加 DNS 重写规则把test.lab、grafana.lab都指向 NPM 所在机器的 IP在路由器 DHCP 设置里把 DNS 服务器改为 AdGuard Home 的 IP重启路由器连接手机、电脑、智能电视全部自动生效这样以后新加服务只需要在 AdGuard Home 后台添加一条重写规则所有设备立刻能解析到新域名根本不用再碰每台设备的 hosts。顺便还能看查询日志谁在访问什么一清二楚还能顺手屏蔽掉一堆广告域名。这是我这套方案里性价比最高的一个改动。如果你不想多维护一个服务也可以在路由器里直接设自定义域名映射部分路由器支持把内部域名解析到内网主机。不过这类功能一般藏在高级 DHCP/DNS里不如 AdGuard Home 直观。我的建议是设备超过五个直接上 AdGuard Home一天内能稳定跑通省下的精力远超投入。7.3 手机和智能设备需要注意的细节手机浏览器访问http://grafana.lab默认会尝试连接 80 端口NPM 已经开了 80所以没问题。但 iOS 的 Safari 对 HTTP 站点有时会在自动开启 HTTPS的选项上做文章导致访问http://xxx.lab被强制跳转到https://xxx.lab而你没配证书就会打不开。解决方式是在 Safari 设置里关闭自动更新为 HTTPS。iOS 访问自签名 HTTPS 证书则更麻烦些它要求在设置 - 通用 - 关于本机 - 证书信任设置里手动信任证书。Android 相对宽松访问时会弹风险提示选仍然访问即可。这一块内容容易被忽略实际操作中踩到了才会感谢别人提前写了这段。8. 加一层主动权访问控制、高级安全和运维习惯8.1 Access List不让乱七八糟的 IP 靠近NPM 的 Access List 本质上就是 ACL 规则列表。你可以建立一条规则只允许家里的网段访问然后应用到需要受保护的站点。用法进入Access Lists-Add Access List加一条规则Accept CIDR192.168.1.0/24可以再加一条Satisfy Any或者Satisfy All在对应的 Proxy Host 的Access List下拉框里选择该规则如果局域网里设有访客 Wi-Fi访客网络可能在不同网段比如192.168.2.0/24。此时想禁止访客访问内部工具就把规则限制成只放行192.168.1.0/24其余默认拒绝。这是成本最低的隔离手段强烈建议给 SSH、数据库管理面板这类敏感服务挂上。8.2 给敏感页面套一层用户名密码在 NPM 里Access List 的编辑页有Authorization标签页可以设置 Basic Auth 账号密码。配好后访问对应域名会弹出一个浏览器原生登录框。这个功能我用来保护 NPM 管理面板81 端口的前置层——你不要把 NPM 管界面直接暴露外面至少套一层密码和 IP 白名单哪怕在局域网内也别裸奔。限定场景如果你有防火墙阻断策略Windows 2016 服务器上还涉及入站出站规则放行 80/443/81记得检查 Windows PowerShell 脚本或防火墙面板确保不是系统防火墙把 NPM 的端口拦了。有时候 Docker 映射成功但从外部访问就是不通十有八九是防火墙规则没放行。8.3 定期看看 NPM 的访问日志和错误日志NPM 日志不用装额外组件直接在容器里看docker logs npm --tail 100 -f排查问题时一条经典线索是NPM 日志里出现connect() failed (111: Connection refused) while connecting to upstream这基本等于转发目标没启动或者IP/端口填错了。如果看到permission denied则可能和容器网络权限有关。为什么强调日志习惯因为 NPM 的 Web UI 不显示具体错误只会给你一个 502。我刚开始总以为是反正不对就怪 NPM后来才发现 90% 的错误其实是上游服务没起来或者 Docker 网络没接上。学会看日志能帮你把排查时间从二十分钟压到两分钟。9. 常见问题与排查技巧实录下面把我在使用 NPM 过程中真正遇到过的坑结合社区里的高频问题整理成速查表你大概率迟早会碰到其中一个。现象最常见原因处理方式访问域名 502 Bad Gateway上游服务未启动或 NPM 与上游不在同一网络检查服务是否运行核对 Forward Host 是否填错80 端口冲突导致 NPM 起不来IIS、Apache、Synology Web 后台占用了 80停掉占用进程或临时改 NPM 端口映射NET::ERR_CERT_COMMON_NAME_INVALID证书域名与访问域名不匹配证书改成访问的完整域名或加自定义 SAN页面能开但 WebSocket 一直断未开启 WebSocket Support编辑 Proxy Host勾选 Websocket Support上传文件提示 413 Request Entity Too LargeNginx 默认限制 client_max_body_size 1M在 Advanced 加client_max_body_size 100m;内网能访问外网不行防火墙或路由器端口没放行查系统防火墙和路由器的端口转发规则手机访问 HTTP 被强制跳 HTTPSiOS 自动启用 HTTPS关闭 Safari 自动 HTTPS 开关或补上证书新增服务 hosts 不生效hosts 文件缓存flush DNS 缓存或换用 DNS 方案9.1 502 的终极排查顺序遇到 502我现在的排查顺序固定如下先问这个服务真的在跑吗——在浏览器用http://IP:端口直接访问上游能通才继续再问NPM 能访问到它吗——如果上游是容器看是否和 NPM 同一个webnet如果上游是宿主机进程看 NPM 填的是不是宿主 IP最后看日志——docker logs npm --tail 50看upstream关键字这三步做完90% 的 502 都解决了。尤其是第二步多少人栽在填了 localhost上怎么试都不通因为 localhost 在容器里指的是 NPM 自身。9.2 证书错误的 3 种解法NET::ERR_CERT_COMMON_NAME_INVALID这个错误在局域网里几乎人手一次。我遇到的情况是用 IP 访问https://192.168.1.50但证书给test.lab签的域名对不上。解法按优先级排列用域名访问别用 IP。所有用 NPM 的服务都改成域名证书和 URL 对齐问题自然消失如果证书是自签的把证书导出、安装到客户端的系统证书库并设为始终信任测试期间可以临时忽略证书错误但不建议长期养成这种习惯自签证书也是可以导入信任的花三分钟做正事要注意如果你在 NPM 的 SSL 选项里选了Request a new SSL Certificate它默认会往 Lets Encrypt 申请证书写 ACME_EMAIL 时填的内网环境不一定能顺利签发。所以内网我一般选择Custom上传一份脚本生成的自签证书或者直接用 NPM 内置的 Internal 证书。生成自签证书的经典命令openssl req -x509 -newkey rsa:2048 -nodes \ -keyout key.pem -out cert.pem -days 825 \ -subj /CNtest.lab \ -addext subjectAltNameDNS:test.lab,DNS:*.lab,IP:192.168.1.50然后把cert.pem和key.pem导入 NPM 的SSL Certificates再把对应的 Proxy Host 选上这份证书。顺带说明自签证书有效期建议别太长825 天Chrome 信任上限是比较稳妥的时长。9.3 端口冲突排查的一句话口诀做端口操作时请记住这句话先看谁占着再想怎么让。用ss、netstat、lsof查出占用进程后先判断那个服务还要不要再决定是改它的端口还是停掉它。别一上来就强行 kill 进程一句ss -lntp能省下你半小时找服务的时间。尤其要注意的是0.0.0.0:80被占用时不意味着某些 IP 上的 80 还能用前文已说过全局占用的问题。所以查询时看到0.0.0.0或:::80直接认定 80 全局被占即可不要心存侥幸。9.4 裸奔 80/443 的这些坑把几十个内部服务统一暴露到 80/443 确实方便但方便也带着风险。我的建议是管理后台和敏感工具一定挂 Access ListNPM 管理面板 81 端口不对外有条件的话加一层防火墙比如只允许内网网段访问 NPM。还有注意不要把 NPM 的 443 直接映射到公网路由器并做成端口转发除非你清楚自己在做什么。反代是收敛入口的好工具不是把内网全部暴露出去的借口。10. 后续还能怎么玩以及我的几点体会这套方案的扩展空间其实很大。比如给 NPM 加多台后端服务器做负载均衡同一个域名下配多个 Forward HostNPM 默认会轮询。或者用 NPM 的Redirection Hosts把old.lab永久重定向到new.lab省得老同事记错地址。再配合 AdGuard Home 的过滤规则局域网里访问ads.lab也会直接被拦截体验上很像企业级网关的雏形。我个人在实际使用过程中的三点体会第一稳定优先。NPM 本身很成熟不用天天升级追新版本。只要容器没有崩溃配置就没必要频繁改动。我的 NPM 从部署到现在已经跑了 8 个多月期间只重启过一两次配置完全没变。与其天天折腾工具不如把时间留给业务。第二命名规范非常重要。开头我给每个服务起的域名都随意后来导致同事问那个proj2-old-final.lab是什么。后面我统一按项目-环境-功能.lab的规则命名比如blog-prod-web.lab、api-staging.lab一眼就能明白语义。这个习惯应该从第一天就开始。第三备份策略别忘。NPM 的/data目录就是全部家当定期把docker cp出来或者挂到一个备份盘上一次导出也就几十 MB。真要哪天重装系统恢复也就几分钟的事比重新配全部代理主机强太多。我写了条 cron 凌晨自动打包上传备份盘从此再没为配置丢失发愁过。最后再分享一个小技巧如果某天你发现某个 Proxy Host 访问特别慢先在 Advanced 标签页加上proxy_read_timeout 300s;看看能否缓解。不少内网服务在处理大文件或复杂请求时Nginx 默认的 60 秒超时会打断长任务调大这个值比换机器管用多了。工具始终是手段整理了自己的访问习惯才真正算把这块空间收好。希望这一套分享能让你摆脱IP 加端口的日子给内网的每个服务都安上自己的名字。
返回列表