Technical Anshu 主页 › 教程 › Nginx 代理管理器安装
🐳 Docker 反向代理

Nginx 代理管理器安装 - 2 分钟设置指南

您的服务当前位于丑陋的地址,例如 192.168.1.50:8080。 Nginx 代理管理器将它们转换为干净的名称,例如带有免费 HTTPS 的 app.yourdomain.com - 使用一个 Docker Compose 文件安装,并通过一个简单的 Web 面板(而不是手写的配置文件)进行管理。

✍️ Technical Anshu🐳 Docker Compose🎧 Multi-Language Audio
Nginx 代理管理器安装 - 2 分钟设置指南
🎧 多语言音频: 在视频播放器中,点击 [设置] (⚙️) ➔ [音频轨道] 选择您的首选语言。

📑章节

  1. 反向代理的作用 - 一扇门为您提供所有服务
  2. 开始之前需要什么 - Docker、域和可访问端口
  3. 在安装任何内容之前将您的域 DNS 指向服务器
  4. 创建文件夹和 docker-compose.yml 文件
  5. 通过一个命令启动 Nginx 代理管理器
  6. 首次登录 - 每个人都会犯错的管理员帐户步骤
  7. 逐个字段创建您的第一个代理主机
  8. 获取免费的 Lets Encrypt HTTPS 证书并启用强制 SSL

📋 概述和分步指南

1

开始之前您需要什么

Nginx 代理管理器 (NPM) 可以工作之前必须存在三件事。首先,已安装并运行 Docker 和 Docker Compose 的 Linux 服务器或 PC - NPM 作为容器运行,而不是作为普通程序运行。其次,您可以编辑其 DNS 的域名,因为每个服务都有自己的子域。第三,您的路由器或云防火墙必须能够将端口 80 和 443 转发到这台机器。

📌关于标题中的“2 分钟”:容器启动本身确实很快 - 但只有在 Docker 安装完毕并且本指南中的准备工作完成后。在新机器上,留出适当的时间进行设置、DNS 和证书步骤;诚实的总时间超过两分钟。
⚠️ 在 CGNAT 后面的家庭连接上,端口转发根本无法工作 - NPM 内的任何设置都无法解决这个问题。诚实的选择是来自 ISP 的公共/静态 IP、租用的小型 VPS 或隧道工具。不要跳过此检查:所有“NPM 不起作用”的故事中有一半实际上是“端口从未到达服务器”的故事。
2

首先将您的域名 DNS 指向服务器

NPM 按名称路由流量,而 Lets Encrypt 仅针对可证明指向您的计算机的名称颁发证书 - 因此在您在其上构建任何内容之前必须解析该名称。在您的注册商或 DNS 主机处,添加 A 记录:名称仅为子域单词(例如 app),值是您服务器的公共 IP 地址。每个服务都有自己的记录,并且它们都可以指向同一个 IP - NPM 稍后按名称分隔服务。在测试时设置较短的 TTL(例如 300 秒),这样错误会在几分钟而不是几小时内消失。

在继续之前先证明这一点:检查名称是否从外部网络解析为您的公共 IP(例如,从关闭 Wi-Fi 的手机)。针对损坏的 DNS 请求证书会浪费 Let's Encrypt 尝试,并且重复失败可能会限制您数小时的速率。顺序很重要:DNS 第一,代理主机第二,证书第三。

3

创建文件夹和撰写文件

在服务器上为 NPM 创建一个文件夹,并将以下文件保存在其中:docker-compose.yml。这个单个文件就是完整的安装。镜像名称为官方社区镜像。端口 80 和 443 是公共门,端口 81 是管理面板,这两个卷是您的整个设置所在的位置:./data 保存包含所有代理主机的数据库,./letsencrypt 保存您的证书。丢失这两个文件夹就会丢失整个设置 - 一旦运行就备份它们。

docker-compose.yml
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

restart:unless-stopped 行在重新启动后自动恢复 NPM。

4

启动 Nginx 代理管理器

从该文件夹内运行启动命令。 Docker 下载镜像并在后台启动容器。

Terminal
docker compose up -d

检查它是否正在运行:

Terminal
docker ps

您应该看到列出了端口 80、443 和 81 的容器。在小型服务器上,创建数据库时第一次启动需要一两分钟。如果容器不断重新启动,日志会以简单的语言显示原因:

Terminal
docker compose logs

重启循环十分之九是主机上的其他设备已使用的端口 - 通常是仍在运行的旧 Web 服务器。

5

首次登录 - 立即保护管理员帐户

在您自己网络上的浏览器中打开管理面板:

Browser Address Bar
http://your-server-ip:81

在第一分钟内执行此操作。根据构建的不同,NPM 要么要求您用自己的电子邮件和强密码替换众所周知的首次登录管理员详细信息,要么在没有默认帐户的较新构建上,第一个打开管理页面的人创建管理员。无论哪种方式,规则都是相同的:在容器启动时、创建其他任何内容之前设置您自己的管理员帐户,并使用真实的邮箱 - 用于解决证书问题的 NPM 电子邮件。

⚠️ 当您“稍后完成”时,切勿让端口 81 可公开访问。互联网上任何首先找到该面板的人都拥有您的代理。仅将管理面板保留在您自己的网络上。
6

创建您的第一个代理主机

在 NPM 中,打开主机 → 代理主机 → 添加代理主机,然后将表单填写为一句话 - “此名称将转到该内部服务”:

域名: app.yourdomain.com - 第 2 步中的确切公开名称,必须已解析为您的服务器。
方案: http 适用于大多数家庭和办公室应用程序。方案描述了 NPM 和内部服务之间的连接,而不是访问者使用的内容 - NPM 在门口处理公共加密。仅当内部应用本身提供 HTTPS 服务时,才在此处选择 https。
转发主机名/IP:服务的内部地址,例如192.168.1.50。
转发端口:服务实际侦听的端口,例如8080 - 而不是 80 或 443;这些是 NPM 的门,而不是服务的门。

启用阻止常见漏洞,然后保存。通过在浏览器中打开该名称立即进行测试 - 最好在 Wi-Fi 关闭的情况下通过手机打开,这样您就可以测试真实的公共路径。

✅ 来自 NPM 的 502 Bad Gateway 是一个路标,而不是失败:这意味着外部世界完美地到达了 NPM,只有最后一个内部跃点(主机名或端口)是错误的。修复该字段,而不是整个设置。还有一个陷阱:如果服务在另一个 Docker 容器中运行,localhost 是错误的(在 NPM 的容器内,localhost 表示 NPM 本身) - 使用服务器的 LAN IP 和已发布的端口,或者将两个容器放在同一个 Docker 网络上并使用容器名称。
7

获取免费的 Lets Encrypt HTTPS 证书

仅在步骤 6 中的普通主机已经工作后才执行此操作 - 损坏主机上的 HTTPS 为您提供带有证书的损坏主机,以及查找故障的两倍位置。打开同一代理主机,转到SSL选项卡,将SSL证书设置为请求新的SSL证书,启用强制SSL和HTTP/2支持,同意Lets Encrypt服务条款,然后保存。重新加载网站 - 浏览器现在应该在 https 上显示挂锁。

工作原理:Lets Encrypt 通过在端口 80 上的公共互联网上要求服务器显示一次性令牌(HTTP-01 质询)来证明您可以控制名称。这就是为什么指向您的 DNS 和可到达的端口 80 是不可协商的 - 任何一个失败,请求都会失败,并且错误出现在设置中,而不是出现在 Lets Encrypt 中。 强制 SSL 自动将每个 http 访问者重定向到 https;如果没有它,未加密的门将在加密的门旁边保持打开状态。

📌 证书的有效期为 90 天,NPM 会自动更新它们,通常在到期前一个月左右,使用相同的端口 80 证明。如果续订失败,请首先检查无聊的原因:DNS 更改、路由器转发被删除或端口 80 被阻止。仅在服务解决并证明续订后才启用HSTS - 这是浏览器数月以来记住的强烈承诺。

🏷️主题搜索变量和关键字

🔍 Nginx Proxy Manager 🔍 Reverse Proxy 🔍 Docker Compose 🔍 Lets Encrypt 🔍 Free HTTPS 🔍 Proxy Host 🔍 TechnicalAnshu 🔍 Self Hosting 🔍 Subdomain Setup 🔍 Port 80 443 81 🔍 Force SSL 🔍 Home Server
🎙️ 完整文字记录 — 点击展开

__TOK_34__

__TOK_35__

__TOK_36__

❓ 常见问题

本教程是 100% 免费学习的吗?

__TOK_37__

初学者可以遵循本指南吗?

__TOK_38__

如果遇到困难我可以在哪里提问?

__TOK_39__

🚀 在 YouTube 上观看完整教程

__TOK_40__

__TOK_41__

▶️观看完整视频
本教程基于技术安叔的Nginx Proxy Manager 安装视频 • 是否卡在任何步骤?在视频评论中提问——你会在那里得到帮助🙏