# 如何在 Ubuntu 22.04 上安装 Nginx Proxy Manager 教程

**URL:** <https://forum.rainyun.com/t/topic/10466>\
**Category:** 云服务器 RCS\
**Created:** [2024 年12 月 30 日 07:13 UTC](https://forum.rainyun.com/t/topic/10466 "2024-12-30T07:13:32Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![ivwv](https://forum.rainyun.com/user_avatar/forum.rainyun.com/ivwv/32/9800_2.png) [@ivwv](https://forum.rainyun.com/u/ivwv)\
发布日期： [2024 年12 月 30 日 07:13 UTC](https://forum.rainyun.com/t/topic/10466/1 "2024-12-30T07:13:32Z")

</div>

## 简介

在本教程中， **你** 将学习如何在 Ubuntu 22.04 服务器上安装 Nginx Proxy Manager。

Nginx Proxy Manager 是一个用户友好的、基于 Web 的界面，旨在简化 Nginx 作为反向代理的管理。它允许用户管理代理主机、SSL 证书和转发规则，而无需手动配置 Nginx。该工具特别适用于处理单个服务器上运行的多个应用程序的 Web 流量，通过将请求路由到适当的服务。

Nginx Proxy Manager 的主要功能包括：

- **反向代理管理：** 它使 **你** 能够轻松地为 Web 应用程序设置反向代理，允许 **你** 将域流量转发到不同的服务。
- **SSL 支持：** 与 Let’s Encrypt 集成，它提供自动的 SSL 证书生成和续订，确保安全的流量。
- **基于 Web 的 GUI：** 该平台提供了一个图形界面来添加、编辑和管理代理主机和设置，而不是通过命令行管理配置。
- **用户管理：** 它支持多用户设置，允许 **你** 创建和管理具有特定访问权限的不同用户帐户。
- **简化的域名和证书处理：**  **你** 可以轻松管理多个域名及其证书，从而降低手动设置的复杂性。

本指南将逐步向 **你** 展示如何在 Ubuntu 22.04 上安装 Nginx Proxy Manager。

## 准备工作

### 服务器准备

**必要前提：**

- 一个充满求知欲的大脑。
- 一台 **Linux** 服务器（推荐腾讯云、阿里云或雨云等）。

我将以 [雨云](https://rainyun.ivwv.site/) 为例，带大家创建一台自己的云服务器，以便学习本篇文章的内容。

**注册链接：** [https://rainyun.ivwv.site](https://rainyun.ivwv.site/)

### 创建雨云服务器

> 以下步骤仅供参考，请根据实际需求选择配置。

- 点击 **云产品** → **云服务器** → **立即购买** 。
- 选择距离 **你** 较近的区域，以保证低延迟。

 ![](https://forum.rainyun.com/uploads/default/original/2X/1/1ea870c570e14282fdfe07192d2bf7ec8b44673a.jpeg)

- 按照自己需求选择配置，选择Ubuntu 22.04 版本，按照自己需求是否预装Docker。
- 最后按照提示进行购买。
- 购买后等待机器部署完毕，点击刚刚创建好的服务器，进入管理面板，找到远程连接相关信息。

 ![](https://forum.rainyun.com/uploads/default/original/2X/8/86931c042b220326afe88185a489d9aea5c11460.png)

- 我们使用 `PowerShell` 进行 `SSH` 远程连接到服务器，`Win+R` 打开运行窗口，输入 `powershell` 后点击确定。

 ![](https://forum.rainyun.com/uploads/default/original/2X/d/d811e01096139660bbb6ed214ef311916dbf3861.png)

- 输入 `ssh root@你的服务器IP` 例如 `ssh root@154.9.227.239` 回车后，首次需要输入 `yes`，再次回车后即可登录服务器。

 ![](https://forum.rainyun.com/uploads/default/original/2X/a/aaeabc31e3d8213f9fe78561d4d01d81b1e05635.png)

- 到此为止，我们的云服务器就远程连接上了。

## 安装和配置步骤

### 第一步：更新你的服务器

首先更新服务器的软件包列表，以确保所有软件都是最新的。

```bash
sudo apt update && sudo apt upgrade -y

```

### 第二步：安装 Docker

Nginx Proxy Manager 使用 Docker，所以第一步是安装 Docker 和 Docker Compose。

安装 Docker：

运行以下命令来安装 Docker：

```bash
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \\
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \\
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \\
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

```

要安装最新版本，请运行：

```bash
sudo apt-get install docker-ce

```

验证安装：

```bash
docker --version

```

你应该看到 Docker 版本输出。

接下来，安装 Docker Compose：

下载 Docker Compose 二进制文件：

```bash
sudo curl -L "https://github.com/docker/compose/releases/download/v2.29.7/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

```

设置可执行权限：

```bash
sudo chmod +x /usr/local/bin/docker-compose

```

验证安装：

```bash
docker-compose --version

```

### 第三步：创建 Nginx Proxy Manager 的目录

现在已经安装了 Docker，让我们设置 Nginx Proxy Manager。

创建目录：

```bash
mkdir -p ~/nginx-proxy-manager
cd ~/nginx-proxy-manager

```

### 第四步：创建 Docker Compose 文件

我们将使用 Docker Compose 来管理 Nginx Proxy Manager 容器。在 nginx-proxy-manager 目录中，创建一个 docker-compose.yml 文件。

创建 `docker-compose.yml` 文件：

```bash
nano docker-compose.yml

```

添加以下配置：

```yaml
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: always
    ports:
      - '80:80' # HTTP
      - '81:81' # Admin GUI
      - '443:443' # HTTPS
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm_password"
      DB_MYSQL_NAME: "npm"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
  db:
    image: 'mariadb:latest'
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 'root_password'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm_password'
    volumes:
      - ./db:/var/lib/mysql

```

- ports：暴露 HTTP (80)、Admin GUI (81) 和 HTTPS (443) 的端口。
- 将 `root_password` 和 `npm_password` 替换为你安全的密码。
- volumes：这些定义了数据和证书将存储在主机系统上的位置。

### 第五步：使用 Docker Compose 启动 Nginx Proxy Manager

一旦配置了 docker-compose.yml 文件， **你** 可以使用 Docker Compose 启动 Nginx Proxy Manager。

运行 Docker Compose：

```bash
docker-compose up -d

```

- `d` 标志在分离模式下运行容器，允许 **你** 继续使用终端。

验证容器是否正在运行：

```bash
docker-compose ps

```

**你** 应该看到 Nginx Proxy Manager 和 MariaDB 容器都在运行。

### 第六步：访问 Nginx Proxy Manager

现在 Nginx Proxy Manager 正在运行， **你** 可以访问基于 Web 的界面。

打开 **你** 的浏览器并导航到 `http://<你的服务器IP>:81`。

 ![](https://forum.rainyun.com/uploads/default/original/2X/8/8085c4a1f04542961d91d1bf6182d3a6e8cd8f94.png)

使用默认凭据登录：

```auto
Email: admin@example.com
Password: changeme

```

更改默认凭据：登录后，系统会提示 **你** 更改电子邮件和密码。设置一个强密码来保护 **你** 的系统。

### 第七步：保护 Nginx Proxy Manager

要使用主机名（例如，[https://hostname](https://hostname/) 而不是 [http://serverip:81](http://serverip:81/)）通过 HTTPS 安全地访问 Nginx Proxy Manager (NPM) 面板， **你** 需要按照以下步骤操作。这包括为面板设置域名、配置 DNS 记录以及使用 Let’s Encrypt 获取 SSL 证书。

**访问 Nginx Proxy Manager 的 Web UI**

通过访问 `http://serverip:81` 登录 NPM 面板。  
输入 **你** 的登录凭据。

**为 NPM 面板添加新的代理主机**

要使 Nginx Proxy Manager 本身可以通过域名上的 HTTPS 访问， **你** 需要为其自己的界面创建反向代理规则。

- 转到 Nginx Proxy Manager 中的“主机”选项卡，然后选择“代理主机”。
- 单击“添加代理主机”以创建新的代理主机。

**配置代理主机**

在代理主机创建表单中：

- 域名：输入 **你** 的域名或子域名（例如，[npm.yourdomain.com](http://npm.yourdomain.com/)）。
- 方案：选择“http”（因为 **你** 正在转发可通过 HTTP 在端口 81 上访问的管理界面）。
- 转发主机名/IP：输入 **你** 的服务器的主机名（例如，localhost）。
- 转发端口：输入端口 81（因为 Nginx Proxy Manager 管理面板默认在此端口上运行）。
- 启用 Websockets 支持：启用此选项以允许 WebSocket 连接，某些服务可能需要它。
- SSL 选项卡：
  - 选择“请求新的 SSL 证书”以通过 Let’s Encrypt 自动颁发 SSL 证书。
  - 选中“强制 SSL”：此选项确保所有流量都重定向到 HTTPS。
  - 通过选中该框同意 Let’s Encrypt 服务条款。

保存配置。

**测试 HTTPS 访问**

创建代理主机后，等待 Nginx Proxy Manager 通过 Let’s Encrypt 为 **你** 的域/子域自动颁发 SSL 证书。

打开 **你** 的浏览器并导航到 `https://npm.yourdomain.com`。

**你** 现在应该可以通过 HTTPS 安全地访问 Nginx Proxy Manager 面板。

### 第八步：设置反向代理主机

登录后， **你** 可以开始为 **你** 的应用程序创建反向代理主机。

- 转到仪表板中的“主机”\>“代理主机”。
- 单击“添加代理主机”以添加新主机。

填写详细信息：

- 域名：输入 **你** 要转发的域名。
- 方案：根据后端服务选择 HTTP 或 HTTPS。
- 转发主机名/IP：输入 **你** 要代理的服务的 IP 地址或主机名。
- 转发端口：后端服务的端口。

SSL 配置： **你** 可以使用 Let’s Encrypt 直接从 Nginx Proxy Manager 界面为 **你** 的域启用 SSL。

保存 **你** 的设置。

Nginx Proxy Manager 现在将为 **你** 的应用程序处理反向代理。

### 第九步：使用 Let’s Encrypt 启用 SSL

要使用 SSL 保护 **你** 的反向代理， **你** 可以轻松启用 Let’s Encrypt 证书。

- 在设置代理主机时转到 SSL 选项卡。
- 选择“请求新的 SSL 证书”。
- 选中“强制 SSL”以将所有 HTTP 流量重定向到 HTTPS。
- 点击“保存”。

Nginx Proxy Manager 将自动请求并安装来自 Let’s Encrypt 的 SSL 证书。

### 第十步：管理代理主机和证书

从 Nginx Proxy Manager 仪表板， **你** 可以管理多个反向代理主机和证书。 **你** 还可以监视证书的状态并自动续订它们。

### 第十一步：管理 Docker 容器（可选）

如果需要停止或重新启动 Nginx Proxy Manager 容器， **你** 可以使用 Docker 命令执行此操作：

停止容器：

```bash
docker-compose down

```

重新启动容器：

```bash
docker-compose up -d

```

## 结论

我们已经了解了如何在 Ubuntu 22.04 服务器上安装 Nginx Proxy Manager。凭借其用户友好的 GUI， **你** 现在可以轻松管理反向代理、SSL 证书等。此设置提供了一种简化的方法，可以在单个界面下处理多个 Web 服务，同时使用 Let’s Encrypt 对其进行保护。

请随意探索其他功能，如访问列表、重定向主机等！

雨云 - 新一代云服务提供商: [https://rainyun.ivwv.site](https://rainyun.ivwv.site/)

我的博客：[https://blog.ivwv.site](https://blog.ivwv.site/)
