Nginx Proxy Manager 完全使用指南
Nginx Proxy Manager 是一个基于 Web 的 Nginx 管理工具,可以通过友好的界面管理 Nginx 服务器和反向代理配置。本文将详细介绍如何安装、配置和使用。
什么是 Nginx Proxy Manager?
Nginx Proxy Manager 是一个开源的 Nginx 配置管理工具,提供了 Web 界面来简化 Nginx 的配置过程。主要特点包括:
- Web 界面管理:无需手动编辑配置文件
- SSL 证书管理:自动申请和续期 Let's Encrypt 证书
- 反向代理配置:可视化配置后端服务
- 负载均衡:支持多种负载均衡算法
- 访问控制:IP 白名单/黑名单、基础认证
- 监控和日志:实时监控服务状态
适用场景
Nginx Proxy Manager 特别适合以下场景:
-
Home Lab / 家庭服务器
- 管理多个 Web 服务
- 配置反向代理到不同容器
- 统一的 SSL 证书管理
-
小型公司部署
- 管理内网服务
- 配置对外访问的反向代理
- 集中管理 Nginx 配置
-
开发测试环境
- 快速切换后端服务
- 临时启用/禁用服务
- 测试负载均衡配置
安装 Nginx Proxy Manager
方式 1:使用 Docker(推荐)⭐
Docker 是最简单和推荐的安装方式。
前置要求
- Docker 已安装
- Docker Compose 已安装
安装步骤
-
克隆项目仓库
git clone https://github.com/NginxProxyManager/nginx-proxy-manager.git cd nginx-proxy-manager -
使用 Docker Compose 启动
# 启动服务 docker-compose up -d
查看日志
docker-compose logs -f
3. **访问 Web 界面**
打开浏览器访问:http://your-server-ip:81
默认账号:admin@example.com
默认密码:changeme
### 方式 2:使用 Docker 镜像
如果您不想克隆源码,可以直接使用官方 Docker 镜像。
```bash
docker run -d
--name=nginx-proxy-manager
-p 80:80
-p 443:443
-p 81:81
--restart=unless-stopped
nginxproxymanager/nginx-proxy-manager:latest
端口说明:
- 80:HTTP 流量
- 443:HTTPS 流量
- 81:管理界面
方式 3:源码编译(不推荐)
如果您需要自定义功能,可以从源码编译安装。
# 安装依赖
npm install
npm run build
# 启动服务
npm start
基础配置
登录管理界面
- 打开浏览器访问:http://your-server-ip:81
- 使用默认账号密码登录
- 重要:首次登录后立即修改密码!
修改默认密码
- 点击右上角头像
- 进入 "Settings"(设置)
- 修改密码
- 保存更改
反向代理配置
创建第一个代理主机
- 点击 "Hosts"(代理主机)
- 点击 "Add Proxy Host"(添加代理主机)
基本配置
- Proxy Type(代理类型):选择
http或https - Domain Names(域名):
- 输入域名(如:example.com)
- 或输入 IP 地址(如:192.168.1.100)
- Scheme(协议):选择
http或https - Forward Hostname / IP(转发主机/IP):后端服务器地址
SSL 配置
- SSL Certificate(SSL 证书):
- 选择
New Certificate(新证书)创建 - 或选择
Let's Encrypt自动申请
- 选择
- Force SSL(强制 SSL):勾选后将 HTTP 重定向到 HTTPS
配置示例
示例 1:代理到本地 Web 服务
Domain Names: localhost.local
Scheme: http
Forward Hostname / IP: 192.168.1.100:8080
这将把访问 http://localhost.local 的请求转发到 http://192.168.1.100:8080
示例 2:代理到 HTTPS 后端
Domain Names: api.example.com
Scheme: https
Forward Hostname / IP: internal-api.local
Forward Port: 443
示例 3:代理到 Docker 容器
Domain Names: myapp.local
Scheme: http
Forward Hostname / IP: 172.17.0.2:3000
这将把访问转发到 Docker 网络中的容器服务。
SSL 证书配置
Let’s Encrypt 免费证书
Nginx Proxy Manager 内置了 Let's Encrypt 支持,可以自动申请和续期免费 SSL 证书。
配置步骤
- 域名解析:确保域名已正确解析到服务器 IP
- 端口开放:开放 80 和 443 端口
- 申请证书:
- 在代理主机配置中
- 选择 "SSL Certificate" → "Let's Encrypt"
- 输入邮箱地址(用于证书通知)
- 输入域名
- 点击 "Save"
证书自动续期
Let's Encrypt 证书有效期为 90 天,Nginx Proxy Manager 会自动在证书到期前 30 天续期。
自定义证书
如果使用购买的 SSL 证书,可以手动上传。
-
准备证书文件:
- 证书文件(.crt)
- 私钥文件(.key)
- 证书链文件(可选)
-
上传证书:
- 进入 "SSL Certificates"(SSL 证书)页面
- 点击 "Add SSL Certificate"
- 上传证书文件
- 保存配置
高级配置
自定义 Nginx 配置
如果需要自定义 Nginx 配置,可以在代理主机设置中使用 "Custom Nginx Configuration" 功能。
常用配置片段
-
自定义 Headers
add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; -
跨域配置(CORS)
add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; add_header Access-Control-Allow-Headers "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control"; -
Gzip 压缩
gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
访问控制
IP 白名单
# 允许的 IP
allow 192.168.1.0/24;
allow 10.0.0.0/8;
# 拒绝其他 IP
deny all;
基础认证
- 进入代理主机设置
- 展开 "Access Lists"(访问列表)
- 点击 "Create Access List"
- 输入名称
- 添加用户名和密码
- 保存
- 在代理主机中应用该访问列表
监控和日志
实时监控
Nginx Proxy Manager 提供实时监控功能:
- 仪表盘(Dashboard):查看所有服务状态
- 流量统计:查看请求数、错误率等
- 资源使用:查看 CPU、内存使用情况
日志查看
- 访问日志:查看 HTTP 请求日志
- 错误日志:查看 Nginx 错误日志
- 代理日志:查看代理转发日志
负载均衡
创建负载均衡
- 点击 "Hosts" → "Proxy Hosts"
- 点击 "Add Proxy Host"
- 在 "Location"(位置)中添加路径
- 展开 "Advanced"(高级)配置
- 启用负载均衡
负载均衡算法
- Round Robin(轮询):按顺序轮流分发请求
- Least Connections(最少连接):选择连接数最少的服务器
- IP Hash(IP 哈希):根据客户端 IP 分发
- Random(随机):随机选择服务器
添加后端服务器
在 "Forward Hosts"(转发主机)中添加多个后端服务器:
- 192.168.1.101:8080
- 192.168.1.102:8080
- 192.168.1.103:8080
负载均衡配置示例
graph LR
Client[客户端] --> LB[负载均衡器]
LB --> S1[服务器 1
192.168.1.101:8080]
LB --> S2[服务器 2
192.168.1.102:8080]
LB --> S3[服务器 3
192.168.1.103:8080]
常见使用场景
场景 1:家庭媒体服务器
需求:在家里的服务器上运行多个媒体服务(Plex, Emby, Jellyfin),需要通过域名访问。
配置方案:
域名配置:
- plex.example.com → 192.168.1.100:32400
- emby.example.com → 192.168.1.100:8096
- jellyfin.example.com → 192.168.1.100:8096
SSL 配置:
- 使用 Let's Encrypt 自动申请证书
场景 2:开发环境多服务
需求:开发环境运行多个微服务,需要统一入口。
配置方案:
主域名:api.example.com
路径配置:
- /user → 用户服务:192.168.1.100:8001
- /order → 订单服务:192.168.1.100:8002
- /payment → 支付服务:192.168.1.100:8003
场景 3:内网服务外网访问
需求:公司内网服务需要通过公网 IP 访问。
配置方案:
域名:internal.example.com
转发目标:10.0.0.100:80
SSL:启用 Let's Encrypt
访问控制:IP 白名单(只允许公司 IP)
常见问题
Q1:无法访问管理界面
A:检查以下几点:
- Docker 容器是否正常运行:
docker ps - 端口 81 是否开放:
netstat -tlnp | grep 81 - 防火墙是否阻止了连接
解决方法:
# 查看容器状态
docker ps -a | grep nginx-proxy-manager
# 查看容器日志
docker logs nginx-proxy-manager
# 重启容器
docker restart nginx-proxy-manager
Q2:代理配置后无法访问后端
A:检查以下几点:
- 后端服务是否正常运行
- 防火墙是否阻止了连接
- 后端服务是否监听正确的端口
解决方法:
# 测试后端服务连通性
curl -v http://backend-ip:port
# 检查防火墙
firewall-cmd --list-all
Q3:SSL 证书申请失败
A:Let's Encrypt 申请失败的常见原因:
- 域名未正确解析到服务器
- 80 端口未开放
- 防火墙阻止了 Let's Encrypt 验证请求
解决方法:
# 检查域名解析
nslookup your-domain.com
# 检查 80 端口
netstat -tlnp | grep :80
# 检查防火墙
firewall-cmd --list-ports | grep 80
Q4:如何备份配置
A:定期备份 Nginx 配置很重要。
备份方法:
- 通过 Web 界面导出配置
- 或直接备份 Docker 卷:
docker cp nginx-proxy-manager:/data /backup/nginx-proxy-manager-$(date +%Y%m%d)
Q5:如何升级版本
A:使用 Docker 可以轻松升级。
升级步骤:
# 停止并删除旧容器
docker-compose down
# 拉取最新镜像
docker-compose pull
# 重新启动
docker-compose up -d
最佳实践
1. 安全配置
- ✅ 修改默认密码
- ✅ 启用 SSL(HTTPS)
- ✅ 配置防火墙规则
- ✅ 定期更新版本
- ✅ 使用强密码和访问控制
2. 性能优化
- ✅ 启用 Gzip 压缩
- ✅ 配置缓存策略
- ✅ 启用 HTTP/2(如果支持)
- ✅ 合理配置 worker 进程数
3. 监控和维护
- ✅ 定期查看访问日志
- ✅ 监控服务器资源使用
- ✅ 定期备份配置
- ✅ 定期更新 SSL 证书
- ✅ 及时更新版本
参考资源
- Nginx Proxy Manager 官方文档:https://nginxproxymanager.com
- GitHub 仓库:https://github.com/NginxProxyManager/nginx-proxy-manager
- Docker Hub:https://hub.docker.com/r/nginxproxymanager/nginx-proxy-manager
- Nginx 官方文档:http://nginx.org/en/docs/
总结
Nginx Proxy Manager 是一个强大且易用的 Nginx 管理工具,特别适合:
- Home Lab - 家庭服务器管理
- 小型公司 - 内网服务配置
- 开发测试 - 快速配置切换
通过本文的指导,您应该能够:
- ✅ 成功安装 Nginx Proxy Manager
- ✅ 配置反向代理和负载均衡
- ✅ 申请和管理 SSL 证书
- ✅ 配置访问控制和安全策略
- ✅ 监控服务状态和日志
Nginx Proxy Manager 让 Nginx 配置变得简单,非常适合日常使用!
Views: 0
