Nginx Proxy Manager 项目部署与配置完全指南
前言
Nginx Proxy Manager 是一个基于 Nginx 的轻量级反向代理管理工具,它提供了直观的 Web 界面来管理代理主机、SSL 证书等配置。本文将详细介绍如何通过 Docker 部署 Nginx Proxy Manager,并针对不同使用场景提供配置建议。
基础部署方案
准备工作
在开始部署前,请确保系统已安装 Docker 和 Docker Compose。这是运行 Nginx Proxy Manager 的基础环境要求。
标准部署配置
创建 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' # 管理界面端口
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
关键配置说明:
ports
部分映射了三个关键端口,分别用于 HTTP、HTTPS 服务和管理界面volumes
部分将容器内的数据目录和证书目录映射到宿主机,确保数据持久化restart: unless-stopped
确保容器在异常退出后自动重启
启动服务
执行以下命令启动服务:
docker compose up -d
高级数据库配置
对于生产环境,建议使用 MySQL/MariaDB 替代默认的 SQLite 数据库以获得更好的性能。
MySQL/MariaDB 配置示例
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
# ...其他配置同上...
environment:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
DB_MYSQL_NAME: "npm"
depends_on:
- db
db:
image: 'jc21/mariadb-aria:latest'
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
volumes:
- ./mysql:/var/lib/mysql
重要注意事项:
- MySQL 配置会覆盖 SQLite 配置
- 数据库版本要求:MySQL ≥5.7.8 或 MariaDB ≥10.2.7
- 生产环境应使用更复杂的密码替代示例中的简单密码
ARM 设备部署指南
Nginx Proxy Manager 支持多种 ARM 架构设备,包括:
- arm64 (如树莓派 4)
- armv7 (如树莓派 3)
ARM 设备注意事项
- 数据库容器建议使用
yobasystems/alpine-mariadb
镜像替代官方镜像 - 确保设备已正确安装 Docker 和 Docker Compose
- 部署命令与 x86 平台相同,Docker 会自动选择适合的镜像版本
首次运行流程
服务首次启动时会执行以下初始化操作:
- 生成 JWT 密钥并保存在数据目录
- 初始化数据库结构
- 创建默认管理员账户
初始化过程可能需要几分钟时间,具体取决于设备性能。
初始登录信息
系统提供的默认管理员账户为:
邮箱: admin@example.com
密码: changeme
安全提示:首次登录后应立即修改默认凭证,包括邮箱地址和密码。
常见问题解答
Q: 为什么需要映射三个端口? A: 80 和 443 端口用于代理的 HTTP/HTTPS 流量,81 端口用于管理界面,三者功能不同且都需要对外暴露。
Q: 如何确认服务已正常启动?
A: 访问 http://服务器IP:81
应能看到登录界面,使用默认凭证可以登录。
Q: 数据备份如何操作? A: 定期备份 compose 文件同目录下的 data 和 letsencrypt 目录即可。
总结
本文详细介绍了 Nginx Proxy Manager 的部署方法,从最简单的单容器部署到包含独立数据库的生产级部署方案。无论是 x86 服务器还是 ARM 设备,都能找到适合的部署方式。部署完成后,您可以通过直观的 Web 界面轻松管理反向代理和 SSL 证书,无需手动编辑复杂的 Nginx 配置文件。