跳到主要内容
版本:2.22

与 Nginx Proxy Manager 配合使用

Halo 部署

参见 使用 Docker Compose 部署

信息

「反向代理」 部分不进行操作,保证 Halo 服务运行无误即可。

简介

Nginx Proxy Manager 是一个可视化的 Nginx 反向代理管理器,支持在 Web UI 上管理反向代理的网站,支持申请免费的 SSL 证书并自动续签。

接下来会介绍如何使用 Nginx Proxy Manager 来反向代理 Halo,以下的 Nginx 安装方式均来自于 Nginx Proxy Manager 官方文档。在开始之前,建议先阅读一遍官方文档,需要对其有一定的了解。

说明

  • 此文档需要对 Docker 和 Docker Compose 有一定的熟悉程度,并且已经提前在服务器上安装
  • 在安装 Nginx Proxy Manager 之前,需要确保服务器没有其他占用了 80 和 443 端口的服务
  • 需要对 Vim 有一定的熟悉程度
  • 下文使用 NPM 简称 Nginx Proxy Manager

安装 Nginx Proxy Manager

首先,我们创建一个文件夹来存放 NPM 的 docker-compose.yml 文件:

mkdir npm && cd npm
vim docker-compose.yml

将下面的内容复制到 docker-compose.yml 文件:

services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    networks:
      - npm
    restart: unless-stopped
    ports:
      - '80:80'       # Nginx 的 80 端口
      - '443:443'     # Nginx 的 443 端口
      - '81:81'       # Nginx Proxy Manager 的管理端口
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

# 定义网络以便 NPM 与其他容器通信
networks:
  npm:
    name: npm
    attachable: true
信息

配置中提到的 80、443、81 端口需要提前在服务器提供商开放端口。

启动 NPM:

docker compose up -d

在服务正常启动的情况下,现在已经可以通过 http://{服务器公网 IP}:81 访问 NPM 的网页端了。

信息

如果无法通过端口访问到 NPM,可以检查是否在服务器提供商开放了 81 端口。

Nginx Proxy Manager Welcome

首次进入页面会提示创建管理员账户,需要注意的是:邮箱一定要是合法邮箱,后续涉及到 SSL 证书签发

至此,我们已经完成了 Nginx Proxy Manager 的搭建,之后就可以用它给我们的 Halo 或者其他 Web 应用做反向代理了。

配置 Halo 的反向代理

  1. 配置 Halo 的 Docker 编排,需要将 npm 的网络加入到 Halo 的容器,之后就可以使用 Halo 的服务名作为 hostname 在 NPM 的内部进行反向代理了。

    # 省略
    networks:
      # 加入 npm 网络
      npm:
        external: true
      halo:
    
    services:
      halo:
        image: registry.fit2cloud.com/halo/halo:2.22
        container_name: halo
        restart: on-failure:3
        volumes:
          - ./halo2:/root/.halo2
        networks:
          # 加入 npm 网络
          - npm
          - halo
    # 省略

    配置完成之后,需要使用 docker compose up -d 命令重建 Halo 容器。

  2. 进入 NPM 仪表盘,点击代理服务进入代理服务配置页面。

    Nginx Proxy Manager Dashboard

  3. 添加代理配置

    Nginx Proxy Manager Add Proxy

    1. 域名:配置想要代理到 Halo 的域名,需要提前在域名服务商解析到当前服务器
    2. 协议:选择 http
    3. 转发主机名 / IP:填写 Halo 容器的服务名,比如上方示例中的 halo
    4. 转发端口:8090

    以上配置为必须修改,界面中的其他配置可以按需选择,但其中的缓存资源不建议打开,可能不会完全遵守 Halo 的缓存策略。

    配置完成之后,就可以尝试访问域名。

  4. 配置 SSL,点击 SSL 选项卡,勾选 申请新证书 之后保存即可,同时建议勾选 强制 SSL,这样在访问 http 协议的地址时会自动跳转到 https 协议的地址。

    Nginx Proxy Manager SSL

至此,我们已经完成了在 Nginx Proxy Manager 配置 Halo 反向代理并添加 SSL 证书的全过程。