在 Windows 上安装和配置 Nginx Proxy Manager

引言

Nginx Proxy Manager(NPM)是一款开源的图形化工具,用于简化 Nginx 的反向代理、SSL 证书管理和负载均衡配置。相较于手动编辑 Nginx 配置文件,NPM 提供直观的 Web 界面,特别适合初学者和需要快速配置的用户。本文详细介绍如何在 Windows 系统上安装和配置 Nginx Proxy Manager,特别针对已安装 Nginx 和 NginxWebUI 的用户,帮助他们通过 Docker 部署 NPM,并与现有 Nginx 实例协调工作。文章基于用户的具体环境(Windows 10 版本 10.0.20348.2966,Nginx 解压安装在 D:\program\nginx,NginxWebUI 运行在 D:\home\nginxWebUI)提供指导。

背景

用户已在 Windows 系统上通过解压方式安装了 Nginx(位于 D:\program\nginx),并使用 NginxWebUI(基于 JDK 24.0.1)管理配置,但希望探索 Nginx Proxy Manager 作为更简单的替代方案。用户提到 NginxWebUI 的初始化配置(如执行命令 D:\program\nginx\nginx.exe -c D:\home\nginxWebUI\nginx.conf -p D:\program\nginx)和一些不适用于 Windows 的命令(如 systemctl start nginx)。Nginx Proxy Manager 通过 Docker 运行,无需 Java 环境,适合简化反向代理和 SSL 配置,但需注意与现有 Nginx 的端口冲突。

本文整合了在 Windows 上安装 Nginx Proxy Manager 的步骤,解决端口冲突、防火墙配置等问题,并提供与现有 Nginx 和 NginxWebUI 共存的方案。

前提条件

在开始之前,请确保满足以下条件:

  • 操作系统:Windows 10/11(版本 10.0.20348.2966 或更高),支持 Docker Desktop。
  • Docker Desktop:已安装并运行,包含 Docker Compose。
  • 权限:以管理员身份运行命令提示符或 PowerShell。
  • 端口可用:80(HTTP)、443(HTTPS)、81(NPM Web 界面)端口未被占用。
  • 网络:系统可访问 Docker Hub 和 Let’s Encrypt(用于 SSL 证书)。
  • 现有 Nginx:解压安装在 D:\program\nginx,可能占用 80 端口,需检查冲突。
  • 防火墙:允许 Docker Desktop 和端口 80、443、81 通过 Windows Defender 防火墙。

安装和配置步骤

步骤 1:安装 Docker Desktop

  1. 下载 Docker Desktop
    • 访问 Docker 官网,下载适用于 Windows 的最新版本(建议 4.35.2 或更高)。
  2. 安装 Docker Desktop
    • 运行安装程序,勾选“Use WSL 2 instead of Hyper-V”(推荐,性能更佳,适用于 Windows 10/11 家庭版或专业版)。
    • 安装完成后,重启计算机以启用 WSL 2 或 Hyper-V。
  3. 验证安装
    • 以管理员身份打开命令提示符(Win + R,输入 cmd)或 PowerShell,运行:
      docker --version
      docker-compose --version
      
    • 预期输出示例:
      Docker version 27.0.3, build 7d4bcd8
      docker-compose version 2.29.1
      
    • 确认 Docker Desktop 在系统托盘运行(检查任务栏右下角 Docker 图标)。

步骤 2:检查端口冲突

  1. 检查现有 Nginx
    • 用户的现有 Nginx(D:\program\nginx)可能占用 80 端口,需停止:
      D:\program\nginx\nginx.exe -s stop -p D:\program\nginx
      
  2. 验证端口可用性
    • 检查 80、443 和 81 端口:
      netstat -aon | findstr :80
      netstat -aon | findstr :443
      netstat -aon | findstr :81
      
    • 如果端口被占用,终止相关进程:
      taskkill /PID <进程ID> /F
      
    • 或者在后续步骤中修改 NPM 的端口映射。
  3. 防火墙配置
    • 确保 Windows Defender 防火墙允许 Docker Desktop 和相关端口:
      • 打开“控制面板” > “Windows Defender 防火墙” > “允许的应用”。
      • 添加 Docker Desktop.exe(通常位于 C:\Program Files\Docker\Docker Desktop.exe)。
      • 允许端口 80、443 和 81 的入站连接。

步骤 3:创建 Docker Compose 文件

  1. 创建目录
    • D:\ 下创建文件夹用于存储 NPM 数据:
      mkdir D:\nginx-proxy-manager
      cd D:\nginx-proxy-manager
      
  2. 创建 docker-compose.yml
    • 使用文本编辑器(如 Notepad++ 或 VS Code)创建 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/letsencrypt
      
    • 说明
      • image:使用官方 Nginx Proxy Manager 镜像。
      • ports:映射容器端口到主机(80、443 用于服务,81 用于 Web 界面)。
      • volumes:持久化存储配置数据和 Let’s Encrypt 证书。
      • restart: unless-stopped:容器自动重启,除非手动停止。
    • 端口冲突处理:如果 80 或 443 端口被占用,可改为:
      ports:
        - '8080:80'
        - '8443:443'
        - '81:81'
      
  3. 验证 YAML 格式
    • 可使用在线工具(如 YAMLlint)检查 docker-compose.yml 语法。

步骤 4:启动 Nginx Proxy Manager

  1. 运行 Docker Compose
    • D:\nginx-proxy-manager 目录下,运行:
      docker-compose up -d
      
    • Docker 将下载 jc21/nginx-proxy-manager 镜像并启动容器。
  2. 验证容器状态
    • 检查容器是否运行:
      docker ps
      
    • 预期输出显示 jc21/nginx-proxy-manager 容器,状态为 Up
  3. 访问 Web 界面
    • 打开浏览器,访问 http://localhost:81(或 http://localhost:8081 如果修改了端口)。
    • 默认登录凭证:
      • 用户名:该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。
      • 密码:changeme
    • 首次登录后,系统会提示更改用户名和密码,设置强密码并保存。

步骤 5:配置反向代理

  1. 添加代理主机
    • 登录 NPM 后,进入“Hosts” > “Proxy Hosts” > “Add Proxy Host”。
    • 示例配置:
      • Domain Namesexample.comsubdomain.example.com(需拥有域名并设置 DNS)。
      • Schemehttphttps
      • Forward Hostname/IP127.0.0.1(本地服务)或目标服务 IP。
      • Forward Port:服务端口(如 8080)。
      • SSL:启用 Let’s Encrypt(需公网域名,80/443 端口开放)。
    • 保存后,NPM 自动生成 Nginx 配置并重启服务。
  2. 测试访问
    • 使用配置的域名或 http://localhost 测试代理是否生效。
    • 如果使用公网域名,确保:
      • DNS 记录指向你的公网 IP。
      • 路由器端口转发 80 和 443 到你的 Windows 机器。

步骤 6:与现有 Nginx 和 NginxWebUI 共存

用户的现有 Nginx(D:\program\nginx)和 NginxWebUI(D:\home\nginxWebUI)可能占用端口或需要协调:

  1. 停止现有 Nginx
    • 如果 NPM 需要 80/443 端口,停止现有 Nginx:
      D:\program\nginx\nginx.exe -s stop -p D:\program\nginx
      
  2. 调整 NPM 端口
    • 如果保留现有 Nginx,修改 docker-compose.yml
      ports:
        - '8080:80'
        - '8443:443'
        - '81:81'
      
    • 重启容器:
      docker-compose down
      docker-compose up -d
      
    • 访问 http://localhost:8080 测试 NPM 代理。
  3. 迁移现有配置
    • D:\home\nginxWebUI\nginx.confD:\program\nginx\conf\nginx.conf 中的反向代理配置导入 NPM,通过 Web 界面添加代理主机。
  4. NginxWebUI 端口
    • 如果 NginxWebUI 占用 8080 端口,编辑 D:\home\nginxWebUI\application.properties
      server.port=8081
      
    • 重启 NginxWebUI:
      cd D:\home\nginxWebUI
      java -jar nginxWebUI.jar
      

常见问题及解决方法

  1. 端口冲突
    • 检查端口占用:
      netstat -aon | findstr :80
      netstat -aon | findstr :443
      netstat -aon | findstr :81
      
    • 终止进程或修改 docker-compose.yml 端口。
  2. Docker 启动失败
    • 确保 Docker Desktop 运行。
    • 查看容器日志:
      docker logs <容器ID>
      
    • 检查 D:\nginx-proxy-manager\dataletsencrypt 目录权限。
  3. 无法访问 Web 界面
    • 确认访问 http://localhost:81
    • 检查防火墙,允许 81 端口。
  4. SSL 证书申请失败
    • 确保域名指向公网 IP,路由器转发 80/443 端口。
    • 测试 Let’s Encrypt 连通性:
      ping acme-v02.api.letsencrypt.org
      
  5. 与 NginxWebUI 冲突
    • NginxWebUI 可能占用 8080 端口,调整其端口(如上)。
    • 或者停止 NginxWebUI,专注于 NPM。

替代方案:继续使用 NginxWebUI

如果用户更倾向于继续使用 NginxWebUI(已配置 D:\program\nginx\nginx.exe -c D:\home\nginxWebUI\nginx.conf -p D:\program\nginx):

  • 优点:无需安装 Docker,适合已有配置,功能更全面(如集群管理)。
  • 步骤
    • 登录 http://localhost:8080,在“配置管理”中导入或编辑 D:\home\nginxWebUI\nginx.conf
    • 配置反向代理或 SSL(如 Let’s Encrypt)。
    • 检查日志:D:\home\nginxWebUI\logs\nginxWebUI.logD:\program\nginx\logs\error.log
  • 缺点:依赖 Java,可能遇到 JDK 24 兼容性问题(可切换到 JDK 11)。

结论

在 Windows 上安装 Nginx Proxy Manager 是一个简单高效的过程,通过 Docker Desktop 部署,无需 Java 环境即可实现反向代理和 SSL 配置。关键步骤包括安装 Docker、创建 docker-compose.yml、启动容器、配置代理主机,并处理与现有 Nginx 或 NginxWebUI 的端口冲突。相较于 NginxWebUI,NPM 更适合初学者和简单场景,但用户可根据需求选择继续使用 NginxWebUI 或迁移到 NPM。

如需进一步配置(如特定反向代理、SSL 设置)或遇到问题(如错误日志、端口冲突),请提供详细信息以获得针对性指导。参考资料包括 Nginx Proxy Manager 官方文档 和 Docker Hub 的 jc21/nginx-proxy-manager 镜像说明。

No comments

公司简介

 

自1996年以来,公司一直专注于域名注册、虚拟主机、服务器托管、网站建设、电子商务等互联网服务,不断践行"提供企业级解决方案,奉献个性化服务支持"的理念。作为戴尔"授权解决方案提供商",同时提供与公司服务相关联的硬件产品解决方案。
备案号: 豫ICP备05004936号-1

联系方式

地址:河南省郑州市经五路2号

电话:0371-63520088

QQ:76257322

网站:800188.com

电邮:该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。