在你开始玩独立服务器并在不同的端口部署各种好玩的 Docker 应用(比如 8080 端口的代码库,3000 端口的 Grafana 探针板)之后,你马上会遇到一个所有新手老手都抓狂的心坎:
每次想给应用绑个域名、加个小绿锁 HTTPS 加密,都需要去那个有着几千字黑底白字极其恐怖且容错率为零的 nginx.conf 里,颤抖地手工加入几十行反向代理路由代码。
漏了一个分号,重启 Nginx 直接崩溃;忘记定期去跑一趟 Let’s Encrypt 的续保脚本,证书过期导致第二天全站红屏。
在这篇属于 2025 年初的旧时代回溯(此时虽然 Caddy 已出,但很多老系统依旧强绑定 Nginx),本教程将会教你部署一个封神级别的图形化(GUI)终极解药 —— Nginx Proxy Manager (简称 NPM)。
NPM 究竟何方神圣
顾名思义这是一款基于老牌网络引擎 Nginx 并利用大量 Node.js API 加以可视化壳子封装的综合反向代理控制大盘。
它运行的最终形态是一套极其精美(甚至比部分大厂收费级控制台还精致)网页面板。 当你未来有新的内部服务(例如:运行在本地 7777 端口的一个电影网站)需要向外网映射,你唯一要做的仅仅是:
- 登录 NPM 后台。
- 点一下【添加代理主机 (Add Proxy Host)】
- 在弹出的漂亮的输入框里填:
movie.mydomain.com转发给127.0.0.1:7777。 - 去 SSL 标签页打个勾:“帮我去自动申请并绑定 Let’s Encrypt 证书”。
- 点击 Save 保存。
十秒钟后,这个新地址就已经带着全球可信的高级安全证书面向外网正式服役了。没有任何配置文件要改写。
利用 Docker Compose 一键启动
我们之前说过万物皆可被 docker-compose 安排。找一台极其干净没有安装过原生 Nginx 和 Apache 等抢占极其重要且金贵的 80 和 443 系统默认网页通道端口的机器。
建立一个目录 npm 并在内部写入此 docker-compose.yml 蓝图:
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
# 万物流量入口,全权接管整个系统极其核心的网络枢纽大通道!
- '80:80'
- '443:443'
# 这个 81 号端口是专门为你极其尊贵的 NPM 终极图形控制台留的高危操作后门
- '81:81'
volumes:
# 把你之后点鼠标生成的数据库配置和你费尽千辛万苦从机构那申请来的极度高级昂贵的 SSL 安全证书永久保存出来
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
在终端抛出 docker-compose up -d 让它在这个虚拟服务器上构建起来。
在你的 81 指挥部操作反向代理魔法
通过极其高纬度的浏览器视角访问 http://你这台VPS的IP:81 。你将面对一个极其极简极其漂亮的登录大门。
输入万年不变非常著名且被无数教程写烂了的首位自带系统极简初始的管理员登录名:
[email protected] 和那极其老套古朴的初始认证口令 changeme。
登入极其宽广大气的后台,它甚至会立马友善的强制让你修改密码以防止极其简单极其危险的初始状态被那些无时无刻不在世界各地扫描着默认 81 后门端口的黑客爬虫军团攻破。
现在,去点击顶部极其显眼的 Hosts (主机集合) ,来到极其令人舒畅极简明了的代理设置板。
将你在别处建好的服务其无保护全透明容易遭到明码甚至不被加密 HTTP 请求窃听极其内网脆弱的 IP 加数字端口协议,全线托管交接到此 NPM 防雨布下。在里面勾上了 “Force SSL(极致强制开启 HTTPS 高级安全绿锁层重定向)“选项。
Nginx Proxy Manager 是一个把极度枯燥硬核且毫无温度高度代码运维难度极其大甚至容错低的代码管理时代,向那些极简平民或者讲究极高视觉化人机交互工程感的高阶白银和重度 Homelab 家用服务器玩家手中交接出平滑过度极大权力的一座伟大丰碑。