侧边栏壁纸
博主头像
泡泡吐puber 博主等级

在这里,吐个有趣的泡泡🫧

  • 累计撰写 13 篇文章
  • 累计创建 7 个标签
  • 累计收到 23 条评论

目 录CONTENT

文章目录

拥抱Nginx Proxy Manager:告别繁琐的 Nginx 配置 | 实用的docker项目

泡泡吐puber
2025-09-07 / 2 评论 / 1 点赞 / 191 阅读 / 0 字 / 正在检测是否收录...

作为一名程序员,我们经常需要与各种 Web 服务和应用打交道。无论是本地开发环境的多个项目,还是服务器上托管的多个网站或服务,如何高效、便捷地管理这些服务的访问入口,尤其是如何处理域名、SSL 证书等问题,一直是一个不大不小却又实实在在的痛点。

传统的做法是直接手写 Nginx 配置文件。虽然灵活强大,但对于多个项目,配置文件的维护就显得异常繁琐和易错。每次新增一个服务,都需要小心翼翼地修改配置,然后 nginx -t 测试,最后 reload。如果再加上 SSL 证书的申请和续期,这个过程的枯燥程度相信大家都深有体会。

而今天的主角——Nginx Proxy Manager,正是为了解决这一问题而生。

Nginx Proxy Manager 是什么?

简单来说,Nginx Proxy Manager 是一个带有简洁易用的 Web 界面的 Nginx 服务管理工具。 它让你能够通过图形化界面,轻松地完成反向代理、SSL 证书申请与自动续期(通过 Let's Encrypt)、访问控制等一系列复杂操作,而无需直接编写任何 Nginx 配置文件。

它的核心优势在于:

  • 简单直观:提供了一个美观且易于操作的 Web UI,几分钟内就能上手。
  • 免费 SSL:集成了 Let's Encrypt,可以一键为你的域名申请和配置免费的 SSL 证书,并实现自动续期。
  • 功能强大:支持反向代理、重定向、自定义 Nginx 配置、访问列表控制等多种实用功能。
  • Docker 化部署:官方推荐使用 Docker Compose 进行部署,整个过程快速、标准且与宿主环境隔离。

实战部署

废话不多说,我们直接上手部署。官方最推荐的方式是使用 Docker Compose,这也是我们程序员最喜欢的方式。

1. 准备工作

首先,你需要在你的服务器上安装好 Docker 和 Docker Compose。这个过程这里就不再赘述了,相信这对于各位来说都是基本操作。

2. 创建 Docker Compose 文件

在一个你喜欢的目录下,创建一个 docker-compose.yml 文件,然后将以下内容粘贴进去:

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # 这几个是必须的端口
      - '80:80' # HTTP 端口
      - '443:443' # HTTPS 端口
      - '81:81' # 管理界面端口

      # 如果你需要使用 MySQL/MariaDB 数据库,请取消下面的注释
      #depends_on:
      #  - db
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
 

  # 如果你需要使用 MySQL/MariaDB 数据库,请取消下面的注释
  #db:
  #  image: 'jc21/mariadb-aria:latest'
  #  restart: unless-stopped
  #  environment:
  #    MYSQL_ROOT_PASSWORD: 'npm-db-password' # 请务必修改为你的强密码
  #    MYSQL_DATABASE: 'npm'
  #    MYSQL_USER: 'npm'
  #    MYSQL_PASSWORD: 'npm-db-password' # 请务必修改为你的强密码
  #  volumes:
  #    - ./data/mysql:/var/lib/mysql
 

代码解读:

  • 我们定义了一个名为 app 的服务,使用了官方镜像 jc21/nginx-proxy-manager:latest。
  • 映射了三个关键端口:80 (HTTP), 443 (HTTPS) 和 81 (管理后台)。这意味着你的服务器的 80 和 443 端口需要是空闲的。
  • 通过 volumes 将容器内的 /data 和 /etc/letsencrypt 目录挂载到宿主机的当前目录下的 data 和 letsencrypt 文件夹中,以实现数据的持久化。
  • 默认情况下,Nginx Proxy Manager 使用 SQLite 数据库。对于大多数个人或小型项目来说已经足够。如果你有更高性能的需求,可以取消 db 服务的注释,并使用 MariaDB。

3. 启动服务

在 docker-compose.yml 文件所在的目录下,执行以下命令:

docker-compose up -d

稍等片刻,Nginx Proxy Manager 就会在后台成功启动。

初始化配置

现在,通过浏览器访问 http://<你的服务器IP>:81,你将看到 Nginx Proxy Manager 的登录界面。

默认的管理员账号和密码是:

首次登录后,系统会强制要求你修改默认的用户名、邮箱和密码,请务必修改为一个安全的组合。

如何使用?——一个简单的例子

这里我们使用nginx-proxy-maneger本身来举个例子,该应用在服务器81端口运行,我们希望通过 npm.puber.top 这个域名来访问它,而不是通过ip加端口的方式,并且自动配置 HTTPS。首先我们在自己的域名控制台添加一条主机记录(npm.puber.top)。

img

然后进入到nginx-proxy-manager进行如下配置:

img

  1. 添加代理主机 (Proxy Host)
    • 在管理界面,点击 "Hosts" -> "Proxy Hosts"。
    • 点击 "Add Proxy Host"。
    • 在 "Domain Names" 中输入 npm.puber.top。
    • "Scheme" 保持 http,"Forward Hostname / IP" 输入你的服务器内网 IP 或者 localhost,"Forward Port" 输入 81。
    • 勾选 "Block Common Exploits" 来增加一点安全性。
  2. 配置 SSL
    • 切换到 "SSL" 标签页。
    • 在 "SSL Certificate" 下拉菜单中选择 "Request a new SSL Certificate"。
    • 勾选 "Force SSL" 和 "HTTP/2 Support"。
    • 最后,勾选 "I Agree to the Let's Encrypt Terms of Service"。
  3. 保存

就是这么简单!Nginx Proxy Manager 会自动与 Let's Encrypt 通信,为你的域名申请证书,并配置好所有必要的 Nginx 规则。稍等片刻,你就可以通过域名来访问你的应用了。

结语

对于需要管理多个 Web 服务的开发者来说,Nginx Proxy Manager 无疑是一款能够极大简化工作流程、提升幸福感的利器。它将复杂的 Nginx 配置和 SSL 证书管理抽象成了简单的 Web 界面操作,让我们能更专注于核心的业务开发。如果你还在为手写 Nginx 配置而烦恼,强烈建议你花十分钟时间尝试一下它。

参考资料:

官方GitHub:https://github.com/NginxProxyManager/nginx-proxy-manager

1

评论区