跳到正文
零樱钰
返回

Nginx Proxy Manager 入门:给自部署服务统一配域名和 HTTPS

当你自部署的服务越来越多,迟早会遇到两个需求:一是想把 http://服务器IP:端口 变成好记的域名,二是想把 HTTPS 证书自动化。
Nginx Proxy Manager(通常简称 NPM)就是为这个场景准备的。它把传统上要手写的 Nginx 反向代理配置做成了后台界面,适合不想长期维护 Nginx 配置文件的人。

为什么很多人先装它

它最实用的地方不是“功能特别多”,而是把高频工作收敛成了几个按钮:
添加代理主机、申请 Let’s Encrypt 证书、强制跳转 HTTPS、配置访问列表。
对于个人服务器、小团队工具站、家庭实验室,这套能力已经覆盖了大部分需求。

如果你已经有 Open WebUI、Uptime Kuma、博客、下载器之类的多个服务,NPM 往往会成为对外入口。

compose 示例

这份 compose 很常见,也足够实用:

services:
  app:
    image: "jc21/nginx-proxy-manager:latest"
    container_name: npm-app
    restart: unless-stopped
    environment:
      TZ: "Asia/Shanghai"
    ports:
      - "80:80"
      - "81:81"
      - "443:443"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

81 端口是后台管理界面,80443 则负责实际对外访问。./letsencrypt 一定要持久化,否则证书重建和续期记录会丢。

部署命令

先准备目录,再启动容器:

mkdir -p ~/apps/nginx-proxy-manager
cd ~/apps/nginx-proxy-manager
mkdir -p data letsencrypt
docker compose up -d

启动后,浏览器访问 http://服务器IP:81 进入后台。第一次登录时按官方默认账户登录,然后立刻修改邮箱和密码。这个步骤不要拖,因为反向代理入口通常是整台机器最重要的边界之一。

实际使用顺序

比较稳妥的顺序是:

  1. 先确保域名已经解析到你的服务器公网 IP。
  2. 再在 NPM 里新增 Proxy Host,填入域名和目标内网地址。
  3. 最后勾选 SSL 证书申请与强制 HTTPS。

这样做的好处是,一旦证书申请失败,你更容易判断问题出在 DNS、端口放行,还是目标服务本身没启动。

适合做什么,不适合做什么

NPM 很适合大多数自部署入口场景,但它不是万能网关。
如果你要做非常复杂的四层转发、WAF、服务网格或者大规模企业级规则,最终还是要回到更专业的方案。
但对个人和小团队来说,它的“够用且省事”恰恰是最大优点。

我的建议是:只要你的服务数量超过两个,就该把访问入口收敛到统一代理层。这样以后迁移端口、加证书、换后端服务时,用户侧域名都不用变。


分享到:

上一篇
Open WebUI 自部署笔记:给自己的大模型入口做一个像样的界面
下一篇
用 Dockge 管理 Docker Compose,比手写命令省心很多