Nginx Proxy Manager使用详细介绍

以下是 Nginx Proxy Manager(NPM) 的详细使用指南,涵盖安装、配置、功能及常见问题解决。NPM 是一款基于 Web 界面的 Nginx 管理工具,适合快速搭建反向代理、SSL 证书管理、内网穿透等场景。

一、安装步骤

  1. 环境要求
    操作系统:Linux(推荐)、Windows(需 Docker)、NAS(如群晖、Synology)。

依赖:Docker 和 Docker Compose(所有平台通用)。

  1. 安装方法(Docker 安装)

1. 创建配置目录

mkdir -p ~/nginx-proxy-manager/{data,letsencrypt}
cd ~/nginx-proxy-manager

2. 创建 docker-compose.yml 文件

nano docker-compose.yml

  1. docker-compose.yml 配置示例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    version: '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
  2. 启动服务
    1
    docker-compose up -d
    Undefined
  3. 访问管理界面
    地址:http://<服务器IP>:81​

默认账号密码:

邮箱:admin@example.com

密码:changeme​

二、基础功能配置

  1. 反向代理配置
    步骤 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 端口。

  1. 访问代理服务
    访问 https://blog.example.com​,即可通过 NPM 访问后端服务。

三、高级功能配置

  1. 路径转发(Path-based Reverse Proxy)
    场景:将不同路径代理到不同后端服务。

示例:/api​ 路径代理到 http://localhost:3000/api​。

操作:

在 Proxy Hosts 中编辑现有代理主机。

在 Routes 标签页添加路径规则:

Path: /api​

Destination: http://localhost:3000/api​

  1. 负载均衡
    场景:将流量分发到多个后端服务器。

操作:

在 Proxy Hosts → Add Proxy Host。

选择 Proxy Type 为 Load Balancer​。

添加多个后端服务器地址(如 http://192.168.1.100:8080​http://192.168.1.101:8080​)。

  1. SSL/TLS 配置
    自定义证书:上传已有的证书(如商业证书)。

证书续期:NPM 自动处理 Let’s Encrypt 证书续期,无需手动操作。

  1. 访问控制
    限制 IP 或 IP 段访问特定代理服务:

进入代理主机的 Access Control 标签页。

添加允许的 IP 范围(如 123.123.123.0/24​)。

  1. 自定义 Nginx 配置
    在 Settings → Custom Nginx Configuration 中添加自定义配置,如:

全局配置

http {
gzip on;
}

单个代理主机配置

server {
# 仅在特定代理主机生效
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Bash
四、常见问题解决

  1. 证书申请失败
    原因:域名未正确解析或端口被占用。

解决:

检查域名解析是否生效:dig blog.example.com​。

确保服务器开放 80/443 端口(防火墙/安全组)。

重启 NPM 容器:docker-compose restart app​。

  1. 代理服务无法访问
    原因:后端服务未启动或端口未监听。

解决:

检查后端服务是否运行:curl http://localhost:8080​。

确保后端服务监听在 0.0.0.0​(而非 127.0.0.1​)。

  1. 端口冲突
    场景:NPM 默认占用 80/443/81 端口,若与其他服务冲突:

修改 docker-compose.yml​ 中的端口映射(如将 81​ 改为 8081​)。

  1. 日志查看
    Nginx 日志:/data/nginx/proxy_host/*.conf​(容器内路径)。

容器日志:docker logs nginx-proxy-manager_app_1​(容器名可能不同)。

五、进阶使用场景

  1. 内网穿透
    通过 NPM 暴露内网服务到公网:

确保内网服务可被 NPM 服务器访问。

在 Target URL 填写内网 IP(如 http://192.168.1.2:8080​)。

结合动态 DNS(如 DuckDNS)应对 IP 变化。

  1. 多域名管理
    支持多个域名,每个域名独立配置:

每个域名对应一个代理主机,设置不同的 SSL 和路径规则。

  1. 安全增强
    强制 HTTPS:在代理主机设置中启用 SSL Redirect。

HSTS 头:在自定义 Nginx 配置中添加 add_header Strict-Transport-Security “max-age=31536000”;​。

六、卸载与备份

  1. 卸载 NPM
    docker-compose down -v # 删除容器和数据卷(谨慎操作)
    Bash
  2. 数据备份
    备份目录:~/nginx-proxy-manager/data​ 和 ~/nginx-proxy-manager/letsencrypt​。

每次修改配置后建议手动备份。

七、总结
Nginx Proxy Manager 的核心优势在于:

图形化界面:无需手动编写 Nginx 配置。

自动 SSL:Let’s Encrypt 证书一键申请和续期。

灵活配置:支持路径转发、负载均衡、访问控制等高级功能。

轻量易用:适合个人或小型团队快速搭建反向代理服务。

通过以上步骤,您可以快速搭建一个安全、高效的反向代理服务器,满足家庭NAS、个人博客、内网服务暴露等需求。