Nginx Proxy Manager (NPM) Nginx 的图形界面使用指南

35 min read

Nginx Proxy Manager (NPM) 是一个基于 Nginx 的图形界面,用于方便地管理反向代理、TLS证书和其他与 Nginx 相关的任务。以下是 Nginx Proxy Manager 的安装和使用指南:

  1. 系统要求
  • Docker 和 Docker Compose 已安装在您的系统上
  • 一个安装有 Linux 发行版的服务器,如 Ubuntu 18.04 或更高版本
  1. 安装 Nginx Proxy Manager

a. 创建一个新目录以存储 NPM 的配置文件和数据:

mkdir nginx-proxy-manager
cd nginx-proxy-manager

b. 创建一个名为 docker-compose.yml 的文件:

vim docker-compose.yml

c. 将以下内容粘贴到 docker-compose.yml 文件中:

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: always
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
  db:
    image: 'jc21/mariadb-aria:latest'
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./data/mysql:/var/lib/mysql

在此文件中,我们定义了两个服务:app(Nginx Proxy Manager)和 db(MariaDB 数据库)。我们还定义了所需的环境变量和数据卷。

d. 保存并关闭文件。然后,在同一目录下运行以下命令以启动 Nginx Proxy Manager 和数据库容器:

docker-compose up -d

此命令将拉取所需的 Docker 镜像并启动两个容器。这可能需要几分钟的时间。

  1. 访问 Nginx Proxy Manager 界面

在浏览器中输入服务器的 IP 地址或域名,加上端口 81(例如 http://your-server-ip:81http://your-domain.com:81),以访问 Nginx Proxy Manager 的登录页面。

默认的管理员帐户信息如下:

登录后,您将被提示更改管理员帐户的电子邮件地址和密码。

  1. 使用 Nginx Proxy Manager

要添加新的代理主机,请执行以下操作:

a. 点击 "Proxy Hosts" 菜单,然后点击 "Add Proxy Host"。
b. 在 "Domain Names" 中,输入您要代理的域名。
c. 在 "Forward Hostname / IP" 和 "Forward Port" 中,输入您要代理到的目标主机名或 IP 地址以及目标端口。
d. 若要使用 SSL/TLS,转到 "SSL" 选项卡,然d. 若要使用 SSL/TLS,转到 "SSL" 选项卡,然后选择 "Request a new SSL Certificate"。勾选 "Force SSL" 和 "HTTP/2 Support",然后输入您的电子邮件地址。最后,点击 "Save" 按钮。

e. 保存代理主机配置后,Nginx Proxy Manager 将自动为您的域名生成反向代理,并在需要时处理 SSL/TLS 证书。

使用 Docker 网络是连接 Nginx Proxy Manager 和其他 Docker 容器的更安全且优秀的做法。以下是如何使用 Docker 网络来代理 Docker 容器端口的指南:

  1. 创建一个 Docker 网络。例如,创建一个名为 "scoobydoo" 的网络:
docker network create scoobydoo
  1. 修改 Nginx Proxy Manager 和其他在同一 Docker 主机上运行的服务的 docker-compose.yml 文件。将以下内容添加到每个服务的 docker-compose.yml 文件中:
networks:
  default:
    external: true
    name: scoobydoo

以 Portainer 为例,其 docker-compose.yml 文件如下所示:

version: '3.8'
services:
  portainer:
    image: portainer/portainer
    privileged: true
    volumes:
      - './data:/data'
      - '/var/run/docker.sock:/var/run/docker.sock'
    restart: unless-stopped
networks:
  default:
    external: true
    name: scoobydoo
  1. 确保 Nginx Proxy Manager 和其他服务都连接到同一个 Docker 网络。如果已经启动了容器,请使用 docker-compose down 命令停止容器,然后使用 docker-compose up -d 重新启动它们。

  2. 在 Nginx Proxy Manager 的 Web 界面中创建一个新的代理主机。在 "Forward Hostname / IP" 中,输入目标 Docker 服务的服务名(在本例中为 "portainer")。在 "Forward Port" 中,输入目标容器暴露的端口(在本例中为 9000)。

  3. 完成 SSL/TLS 配置(如果需要),然后保存代理主机。

现在,Nginx Proxy Manager 将为您的 Docker 容器设置反向代理。当用户访问与代理主机关联的域名时,他们将被重定向到您的 Docker 容器。通过使用 Docker 网络,您无需将目标容器的端口发布到 Docker 主机的所有接口,从而提高了安全性。

将 Nginx Proxy Manager 与 V2Ray 配合使用的方法:

  1. 首先,确保您的 V2Ray 服务已配置为 WebSocket(ws)传输方式,因为 Nginx 更擅长处理 HTTP/HTTPS 流量。
  2. 在 Nginx Proxy Manager 中创建一个新的代理主机。在 "Domain Names" 中,输入您为 V2Ray 配置的域名。
  3. 在 "Forward Hostname / IP" 中,输入您的 V2Ray 服务的 IP 地址或主机名。在 "Forward Port" 中,输入您的 V2Ray 服务的 WebSocket 端口。
  4. 转到 "SSL" 选项卡,选择 "Request a new SSL Certificate"。勾选 "Force SSL" 和 "HTTP/2 Support",然后输入您的电子邮件地址。最后,点击 "Save" 按钮。
  5. 在您的 V2Ray 客户端配置中,更新域名和端口。将域名设置为在步骤 2 中设置的域名,将端口设置为 443(默认的 HTTPS 端口)。