NPM docker映像,轻松转发,免费SSL
大约 3 分钟
🚀 Nginx Proxy Manager 学习与实战汇总
整体流程:
- 服务器部署docker 和 compose
- 构建 docker-compose.yml 文件,启动容器
- 域名 解析到服务器,或者使用 外网IP,并且保证服务器的80、81、443 开放。
- 登录 xxxx:81 ,使用初始账号登录后修改密码。
- 接下来就可以自定义整 ssl、反代之类的了。
- 小技巧:
- 域名解析那里使用使用通配符,*.xxx.xx ->服务器。
一、 简介
Nginx Proxy Manager 是一款基于 Docker 的可视化 Nginx 管理工具,核心优势在于:
- 零配置基础:通过 Web 界面管理反向代理。
- SSL 自动化:一键申请并自动续期 Let's Encrypt 证书。
- 全能转发:支持 HTTP/HTTPS、WebSocket、TCP/UDP 流量转发。
二、 核心部署 (Docker Compose)
建议使用 最新稳定的 版本,并配置外部云数据库和中国时区。
yaml
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # HTTP 流量
- '81:81' # 管理后台
- '443:443' # HTTPS 流量
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
# 挂载本地前端静态项目路径
- /home/user/web/diary-html:/custom-data/diary-html
# 将本地自定义的 index.html 映射到容器内的默认欢迎页位置
- /root/nginx-proxy-manager/custom-data/default_www_index.html:/var/www/html/index.html
environment:
# 时区配置
TZ: "Asia/Shanghai"
# 外部云数据库配置 (如阿里云RDS/自建MySQL)
DB_MYSQL_HOST: "rm-xxxx.mysql.rds.aliyuncs.com"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm_admin"
DB_MYSQL_PASSWORD: "your_password"
DB_MYSQL_NAME: "npm_db"
extra_hosts:
- "host.docker.internal:host-gateway" # 允许容器通过该域名访问宿主机服务docker compose up -d
docker ps -a
docker logs -f nginx-proxy-manager-app-1
docker exec -it nginx-proxy-manager-app-1 /bin/bash
三、 (本地nginx)多项目代理配置实战
方案 A:不同域名指向不同项目
- 解析域名:将
a.com和b.com均指向服务器 IP。 - 创建 Proxy Host:
- Domain:
a.com - Forward Hostname:
192.168.x.x(宿主机Docker内网 IP,勿填 127.0.0.1)。 - Forward Port:
3000(前端项目 A 端口)。
- Domain:
方案 B:静态目录直接托管 + 后端转发 (Advanced 模式)
在 NPM 的 Advanced 选项卡中粘贴以下代码:
nginx
# 1. 托管本地 HTML 静态项目
location / {
root /custom-data/diary-html; # 这里填写你在 Docker 挂载时设置的容器内路径
index index.html;
try_files $uri $uri/ /index.html; # 支持 Vue/React 路由
}
# 2. 转发后端 API 或其他服务
location /api {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://172.17.0.1:8080;
## proxy_pass host.docker.internal; # 转发到宿主机 8080 端口
}四、 常见问题排查 (Troubleshooting)
- 访问 asset/xxx.js 出现 502 Bad Gateway
- 关闭 Cache Assets
- 如何修改默认“Congratulations”欢迎页
映射本地 index。
# 将本地自定义的 index.html 映射到容器内的默认欢迎页位置 - /root/nginx-proxy-manager/custom-data/default_www_index.html:/var/www/html/index.html
- 方法一:后台 Settings -> Default Site -> Custom HTML (推荐)。
- 方法二:将本地 HTML 文件映射至容器内的
/var/www/html/index.html。
五、 2025 运维建议
- 镜像更新:定期执行
docker compose pull && docker compose up -d。若无法拉取,检查镜像加速器延迟,必要时手动指定版本号。 - 安全加固:
- 默认账号
admin@example.com登录后务必立即修改。【在启动时,日志会打印出 账号和密码。】[12/23/2025] [11:41:03 AM] [Setup ] › ℹ info Creating a new user: admin@example.com with password: changeme - 管理后台 81 端口建议仅允许特定 IP 访问或加设二次认证。
- 默认账号
- 证书备份:定期备份
letsencrypt文件夹,防止证书申请触发官方频率限制。
相关链接:
