Nginx Proxy Manager:把反代这件事,从“命令行苦行”变成“点点鼠标就行”
如果你有一台小鸡,跑着博客、节点、面板、API,甚至还想顺手搞个家庭 NAS 的远程访问,那么你迟早会遇到一个问题:
我怎么把这些服务优雅地挂到域名上?怎么上 HTTPS?怎么管理证书?怎么做转发、重定向、访问控制?
过去的经典答案是:写 Nginx 配置,改一堆 server {},再 nginx -t,重载,出错,回滚,继续改。
而 Nginx Proxy Manager(简称 NPM) 的出现,把这套流程变成了一个更“人类友好”的方式:用 Web 面板管理 Nginx 反向代理与证书。
它是什么?
Nginx Proxy Manager 是一个基于 Nginx 的可视化管理面板,你可以在浏览器里完成这些事:
给服务添加反向代理(Reverse Proxy)
一键申请/续期 Let’s Encrypt 免费证书
管理域名、证书、转发规则
添加访问控制(Basic Auth、IP 白名单/黑名单等)
配置重定向(HTTP → HTTPS、301/302)
查看代理状态和基础日志
一句话:它还是 Nginx,但你不需要每次都手写配置文件。 🧩
为什么很多人爱用它?
1) 反代配置超级快
想把 blog.example.com 指向本机 127.0.0.1:8090?
NPM 里基本就是填表:
Domain Names:
blog.example.comForward Hostname / IP:
127.0.0.1Forward Port:
8090勾选 “Websockets Support”(如果你的服务需要)
保存
完成。
2) HTTPS 变得很“傻瓜”
证书申请通常是反代里最烦的部分:验证方式、续期、证书路径、权限。
NPM 把它变成下拉框:
选择 Let’s Encrypt
填邮箱
勾选同意条款
一键申请
可选强制 HTTPS / HSTS
然后它会自动帮你续期证书。🔒✅
3) 特别适合“一个 VPS 多个服务”
比如你同时跑:
Halo 博客(8090)
节点面板(比如 8080)
监控(3000)
其他容器服务
NPM 就像一个“域名交通警察”🚦
把不同域名/子域名的请求分流到不同服务上,管理起来特别直观。
NPM 能做什么(功能清单)
Proxy Hosts:最常用,反向代理(域名 → 内网服务)
Redirection Hosts:重定向(比如 old 域名跳 new 域名)
Stream Hosts:TCP/UDP 转发(适合数据库、游戏服等场景,注意和你具体用途匹配)
Access Lists:访问控制(Basic Auth、IP 限制)
SSL Certificates:证书管理(Let’s Encrypt / 自签 / 导入)
适用场景举例(很贴近你的用法)
你用 Halo 做博客,通常是一个本地端口(例如 8090)。你希望:
访问
https://blog.yourdomain.com就能打开 Halo自动 HTTPS
支持 WebSocket(如果主题或插件用到)
以后再加别的服务也不乱
NPM 就非常合适:它专门擅长“多服务、多域名、统一 HTTPS 管理”。
它的“缺点”和注意点(别只听优点 😼)
1) 多了一层面板,就多了一层需要保护的入口
NPM 自己也是一个 Web 服务。建议:
给管理后台单独域名
强密码 + 最好加访问控制(IP 白名单 / Basic Auth / 仅内网)
不要把后台暴露给所有人随便访问
2) “面板化”意味着部分高级配置不如纯手写自由
NPM 允许加自定义 Nginx 配置片段,但如果你需要非常复杂的 Nginx 玩法,最终还是手写最强。
3) 对小内存机器要注意资源占用
它通常用 Docker 跑,会带数据库(常见是 MariaDB / SQLite 方案取决于镜像与版本)。
在 1C1G/1.25G 这种配置上,建议别同时跑太多“重面板”,否则容易内存紧张。
最后
如果你想要的是:
快速把服务挂上域名
一键 HTTPS + 自动续期
统一管理多个反代规则
不想天天编辑 Nginx 配置文件
那么 Nginx Proxy Manager 就像给你的服务器装了一个“反代驾驶舱”🛫
让反向代理从“手搓工程”变成“可视化维护”。
搭建
一步一输入命令即可
sudo apt install docker.io -y && sudo apt install docker-compose
sudo systemctl enable --now docker
mkdir /home/npm
cd /home/npm
nano docker-compose.yml
复制代码进入文件中
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '8080:81' #这里的8080可以用自定义端口
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt #到这里结束
启动
docker-compose up -d
开始
docker-compose start
停止
docker-compose down文章作者:Geron
文章链接:https://blog.geron.top/archives/260306-1
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!
评论