Nginx Proxy Manager使用详细介绍

Nginx Proxy Manager使用详细介绍
小妖以下是 Nginx Proxy Manager(NPM) 的详细使用指南,涵盖安装、配置、功能及常见问题解决。NPM 是一款基于 Web 界面的 Nginx 管理工具,适合快速搭建反向代理、SSL 证书管理、内网穿透等场景。
一、安装步骤
- 环境要求
操作系统:Linux(推荐)、Windows(需 Docker)、NAS(如群晖、Synology)。
依赖:Docker 和 Docker Compose(所有平台通用)。
- 安装方法(Docker 安装)
1. 创建配置目录
mkdir -p ~/nginx-proxy-manager/{data,letsencrypt}
cd ~/nginx-proxy-manager
2. 创建 docker-compose.yml 文件
nano docker-compose.yml
- docker-compose.yml 配置示例
1
2
3
4
5
6
7
8
9
10
11
12
13version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
ports:
- '80:80' # HTTP
- '443:443' # HTTPS
- '81:81' # 管理面板(默认端口)
volumes:
- ./data:/data # 数据存储目录
- ./letsencrypt:/etc/letsencrypt # SSL证书存储目录
- /var/run/docker.sock:/var/run/docker.sock # 可选:用于与 Docker 容器交互
restart: unless-stopped - 启动服务Undefined
1
docker-compose up -d
- 访问管理界面
地址:http://<服务器IP>:81
默认账号密码:
密码:changeme
二、基础功能配置
- 反向代理配置
步骤 1:添加代理主机
登录 NPM 管理界面,点击 Proxy Hosts → Add Proxy Host。
填写以下信息:
Domain: 需要绑定的域名(如 blog.example.com)。
Proxy Type: 选择 Reverse Proxy。
Target URL: 后端服务地址(如 http://192.168.1.100:8080)。
SSL: 选择 Use Let’s Encrypt(自动申请证书)。
点击 Save。
步骤 2:DNS 解析
在域名服务商(如 Cloudflare、阿里云)添加 A/AAAA 记录:
Host/子域名: blog
记录值: 服务器公网 IP(IPv4/IPv6)。
确保 DNS 解析生效(可通过 dig 或在线工具验证)。
步骤 3:SSL 自动申请
NPM 会自动通过 Let’s Encrypt 申请证书,需等待几分钟。
若失败,检查:
域名是否正确解析到服务器。
服务器防火墙是否开放 80/443 端口。
- 访问代理服务
访问 https://blog.example.com,即可通过 NPM 访问后端服务。
三、高级功能配置
- 路径转发(Path-based Reverse Proxy)
场景:将不同路径代理到不同后端服务。
示例:/api 路径代理到 http://localhost:3000/api。
操作:
在 Proxy Hosts 中编辑现有代理主机。
在 Routes 标签页添加路径规则:
Path: /api
Destination: http://localhost:3000/api
- 负载均衡
场景:将流量分发到多个后端服务器。
操作:
在 Proxy Hosts → Add Proxy Host。
选择 Proxy Type 为 Load Balancer。
添加多个后端服务器地址(如 http://192.168.1.100:8080 和 http://192.168.1.101:8080)。
- SSL/TLS 配置
自定义证书:上传已有的证书(如商业证书)。
证书续期:NPM 自动处理 Let’s Encrypt 证书续期,无需手动操作。
- 访问控制
限制 IP 或 IP 段访问特定代理服务:
进入代理主机的 Access Control 标签页。
添加允许的 IP 范围(如 123.123.123.0/24)。
- 自定义 Nginx 配置
在 Settings → Custom Nginx Configuration 中添加自定义配置,如:
全局配置
http {
gzip on;
}
单个代理主机配置
server {
# 仅在特定代理主机生效
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Bash
四、常见问题解决
- 证书申请失败
原因:域名未正确解析或端口被占用。
解决:
检查域名解析是否生效:dig blog.example.com。
确保服务器开放 80/443 端口(防火墙/安全组)。
重启 NPM 容器:docker-compose restart app。
- 代理服务无法访问
原因:后端服务未启动或端口未监听。
解决:
检查后端服务是否运行:curl http://localhost:8080。
确保后端服务监听在 0.0.0.0(而非 127.0.0.1)。
- 端口冲突
场景:NPM 默认占用 80/443/81 端口,若与其他服务冲突:
修改 docker-compose.yml 中的端口映射(如将 81 改为 8081)。
- 日志查看
Nginx 日志:/data/nginx/proxy_host/*.conf(容器内路径)。
容器日志:docker logs nginx-proxy-manager_app_1(容器名可能不同)。
五、进阶使用场景
- 内网穿透
通过 NPM 暴露内网服务到公网:
确保内网服务可被 NPM 服务器访问。
在 Target URL 填写内网 IP(如 http://192.168.1.2:8080)。
结合动态 DNS(如 DuckDNS)应对 IP 变化。
- 多域名管理
支持多个域名,每个域名独立配置:
每个域名对应一个代理主机,设置不同的 SSL 和路径规则。
- 安全增强
强制 HTTPS:在代理主机设置中启用 SSL Redirect。
HSTS 头:在自定义 Nginx 配置中添加 add_header Strict-Transport-Security “max-age=31536000”;。
六、卸载与备份
- 卸载 NPM
docker-compose down -v # 删除容器和数据卷(谨慎操作)
Bash - 数据备份
备份目录:~/nginx-proxy-manager/data 和 ~/nginx-proxy-manager/letsencrypt。
每次修改配置后建议手动备份。
七、总结
Nginx Proxy Manager 的核心优势在于:
图形化界面:无需手动编写 Nginx 配置。
自动 SSL:Let’s Encrypt 证书一键申请和续期。
灵活配置:支持路径转发、负载均衡、访问控制等高级功能。
轻量易用:适合个人或小型团队快速搭建反向代理服务。
通过以上步骤,您可以快速搭建一个安全、高效的反向代理服务器,满足家庭NAS、个人博客、内网服务暴露等需求。










