项目仓库地址:
一、简介
Nginx Proxy Manager(简称 NPM)是一个基于 Nginx 的图形化反向代理管理工具,提供可视化界面实现 SSL 证书管理、反向代理配置、访问控制等功能。其核心优势在于:
零 Nginx 配置经验即可操作
自动申请/续期 Let's Encrypt 免费证书
支持 HTTP/HTTPS 双协议
提供访问控制、Websocket 支持等高级功能
二、环境准备
1. 系统要求
Linux/Windows/macOS 系统
Docker 20.10+
Docker Compose 1.29+
2. 安装 Docker
# Ubuntu/Debian 系统
sudo apt-get update
sudo apt install docker.io docker-compose -y
# CentOS 系统
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-compose -y三、安装 Nginx Proxy Manager
1. 创建项目目录
mkdir -p ~/npm/{data,letsencrypt}
cd ~/npm2. 配置 Docker Compose
创建 docker-compose.yml 文件,内容如下:
version: '3'
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/letsencrypt3. 启动服务
# 启动,并后台运行
docker-compose up -d
# 查看日志
docker-compose logs -f四、初次配置
1. 访问管理界面
浏览器打开:http://服务器IP:81,
默认账号:
邮箱:admin@example.com
密码:changeme首次登录后系统会强制修改密码。
2. 系统设置
用户管理:点击右上角头像 → Edit User 修改个人信息
邮件通知:Settings → Email 配置 SMTP 服务器
数据存储:默认使用 SQLite,如需 MySQL 参考文末高级配置
五、核心功能配置
1. 添加反向代理
点击 Hosts → Proxy Hosts → Add Proxy Host
填写基本信息:
Domain Names:
example.com,www.example.comForward Hostname/IP:目标服务器 IP 或域名
Forward Port:目标服务端口(如 80/3000)
Block Common Exploits:建议开启基础安全防护
点击 Save 完成创建
2. 配置 SSL 证书
申请证书:
点击 SSL → Add SSL Certificate
选择 Let's Encrypt 模式
填写邮箱和域名,系统自动完成验证
绑定证书:
编辑对应 Proxy Host
在 SSL 选项卡选择已申请的证书
勾选 Force SSL 启用 HTTPS 强制跳转
3. 访问控制
IP 白名单:在 Proxy Host 配置页 → Access List 设置允许访问的 IP 范围
HTTP 认证:勾选 Authentication 后设置用户名密码
六、高级配置
1. 使用 MySQL 存储
修改 docker-compose.yml:
version: '3.8'
services:
app:
...
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'
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'2. 中文版部署
替换镜像为中文版:
image: chishin/nginx-proxy-manager-zh:release七、常见问题
1. 证书申请失败
检查域名解析是否指向服务器 IP
确保 80/443 端口未被其他服务占用
在容器内安装 DNSPod 插件(如需 DNS 验证):
docker exec -it npm_container_id bash
pip3 install certbot-dns-dnspod2. 服务无法访问
检查防火墙规则:
sudo ufw allow 80,443,81/tcp验证容器状态:
docker ps -a八、总结
Nginx Proxy Manager 通过图形化界面大幅降低了 Nginx 的使用门槛,配合自动化的 SSL 证书管理功能,即使是初学者也能快速搭建安全的反向代理服务。建议定期检查更新日志,及时升级到最新版本以获取安全补丁和新特性。