Nginx Proxy Manager Docker Compose:安装与使用 – wiki大全

I am unable to directly write the file due to tool limitations. I will provide the article content here, which you can save as nginx-proxy-manager-docker-compose.md.

Here is the article:

“`markdown

Nginx Proxy Manager Docker Compose:安装与使用

在现代的Web应用部署中,反向代理是不可或缺的一环。它不仅能够提供负载均衡、缓存、安全性增强等功能,还能简化SSL证书的管理。Nginx Proxy Manager (NPM) 是一个基于Nginx的强大反向代理管理工具,它通过一个友好的Web界面,让非专业人士也能轻松配置代理主机、SSL证书(通过Let’s Encrypt)以及重定向等。结合Docker Compose,我们可以快速、便捷地部署和管理NPM。

本文将详细介绍如何使用Docker Compose安装Nginx Proxy Manager,并提供其基本使用指南。

1. 什么是Nginx Proxy Manager?

Nginx Proxy Manager 是一个完整的Nginx配置管理系统,它提供了一个直观的Web界面来:
* 管理代理主机 (Proxy Hosts):轻松将域名指向内部服务。
* 管理重定向 (Redirection Hosts):将一个域名重定向到另一个。
* 管理静态资产 (Static Assets Hosts):服务静态文件。
* SSL证书管理:通过Let’s Encrypt自动申请和续订SSL证书,并支持强制HTTPS。
* 访问控制:为代理主机设置基本身份验证。
* 自定义Nginx配置:为高级用户提供额外的Nginx配置选项。

2. 为什么选择Docker Compose?

Docker Compose 允许我们通过一个简单的YAML文件定义和运行多容器Docker应用程序。使用Docker Compose部署NPM有以下优点:
* 易于部署:只需几条命令即可启动整个NPM环境。
* 可移植性docker-compose.yml 文件可以在任何安装了Docker和Docker Compose的机器上使用。
* 环境隔离:NPM及其依赖(如数据库)运行在独立的容器中,不会干扰宿主机系统。
* 易于管理:更新、备份和恢复都相对简单。

3. 前提条件

在开始安装之前,请确保您的系统满足以下条件:
* Docker:已安装并运行Docker Engine。
* Docker Compose:已安装Docker Compose(通常在安装Docker Desktop时会一并安装)。
* 域名:您需要一个或多个已注册的域名,并将其DNS记录指向您的服务器IP地址。

4. Docker Compose 文件 (docker-compose.yml)

创建一个名为 docker-compose.yml 的文件,并粘贴以下内容。这个配置将启动Nginx Proxy Manager服务和一个MariaDB数据库服务,NPM使用MariaDB来存储其配置数据。

“`yaml
version: ‘3.8’

services:
app:
image: ‘jc21/nginx-proxy-manager:latest’
restart: unless-stopped
ports:
# These ports are for the Nginx Proxy Manager Web Interface
– ’80:80′ # HTTP
– ‘443:443′ # HTTPS
– ’81:81’ # Admin Panel
environment:
DB_MYSQL_HOST: db
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: npm
DB_MYSQL_PASSWORD: YOUR_DB_PASSWORD # !!! CHANGE THIS PASSWORD !!!
DB_MYSQL_NAME: npm
volumes:
– ./data:/data
– ./letsencrypt:/etc/letsencrypt
depends_on:
– db

db:
image: ‘jc21/mariadb-alpine:latest’
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: YOUR_MYSQL_ROOT_PASSWORD # !!! CHANGE THIS PASSWORD !!!
MYSQL_DATABASE: npm
MYSQL_USER: npm
MYSQL_PASSWORD: YOUR_DB_PASSWORD # !!! USE THE SAME PASSWORD AS ABOVE !!!
volumes:
– ./mysql:/var/lib/mysql
“`

配置说明:

  • version: '3.8': 指定Docker Compose文件格式版本。
  • services: 定义应用程序的服务。
    • app (Nginx Proxy Manager 服务):
      • image: 'jc21/nginx-proxy-manager:latest': 使用官方提供的最新NPM Docker镜像。
      • restart: unless-stopped: 容器在退出时会自动重启,除非手动停止。
      • ports: 端口映射。
        • 80:80: 将宿主机的80端口映射到容器的80端口,用于HTTP流量。
        • 443:443: 将宿主机的443端口映射到容器的443端口,用于HTTPS流量。
        • 81:81: 将宿主机的81端口映射到容器的81端口,用于NPM的管理面板。
      • environment: 环境变量,用于配置NPM连接到MariaDB数据库。务必修改 DB_MYSQL_PASSWORD 为一个强密码!
      • volumes: 卷映射,用于持久化数据。
        • ./data:/data: 将宿主机当前目录下的 data 文件夹映射到容器的 /data,NPM的配置和SSL证书等将存储在这里。
        • ./letsencrypt:/etc/letsencrypt: Let’s Encrypt证书的存储路径。
      • depends_on: - db: 表示 app 服务依赖于 db 服务,db 服务会先于 app 启动。
    • db (MariaDB 数据库服务):
      • image: 'jc21/mariadb-alpine:latest': 使用官方提供的MariaDB Docker镜像。
      • restart: unless-stopped: 容器在退出时会自动重启。
      • environment: 环境变量,用于配置MariaDB数据库。务必修改 MYSQL_ROOT_PASSWORDMYSQL_PASSWORD 为强密码,并且 MYSQL_PASSWORD 必须与 app 服务中的 DB_MYSQL_PASSWORD 保持一致!
      • volumes: 卷映射,用于持久化数据库数据。
        • ./mysql:/var/lib/mysql: 将宿主机当前目录下的 mysql 文件夹映射到容器的 /var/lib/mysql,数据库文件将存储在这里。

5. 安装步骤

  1. 创建 docker-compose.yml 文件: 在您选择的目录(例如 ~/nginx-proxy-manager)中创建 docker-compose.yml 文件,并将上述内容复制进去。切记修改所有占位符密码!

    bash
    mkdir -p ~/nginx-proxy-manager
    cd ~/nginx-proxy-manager
    nano docker-compose.yml # 或使用您喜欢的编辑器

  2. 启动服务: 在 docker-compose.yml 文件所在的目录下,运行以下命令启动Nginx Proxy Manager及其数据库服务:

    bash
    docker compose up -d

    * -d 参数表示在后台运行容器。

  3. 验证安装:

    • 运行 docker compose ps 命令,您应该会看到 appdb 两个服务都处于 Up 状态。
    • 访问 http://YOUR_SERVER_IP:81,您应该能看到Nginx Proxy Manager的登录界面。

6. 基本使用

6.1 首次登录Nginx Proxy Manager

首次登录时,使用以下默认凭据:

登录后,系统会立即要求您修改邮箱和密码。请务必修改为安全的凭据!

6.2 添加代理主机 (Proxy Host)

代理主机是NPM最核心的功能。它允许您将外部域名请求转发到您内网的某个服务。

  1. 点击 “Hosts” -> “Proxy Hosts” -> “Add Proxy Host”
  2. Domain Names (域名): 输入您想要代理的域名,例如 your-app.example.com
  3. Scheme (协议): 选择 httphttps,这取决于您的后端服务使用的协议。
  4. Forward Hostname / IP (转发主机名/IP): 输入后端服务的IP地址或Docker容器名称(如果您将NPM和后端服务放在同一个Docker网络中)。例如,如果您的Web应用程序在同一服务器上的 8080 端口运行,IP可能是 127.0.0.1
  5. Forward Port (转发端口): 输入后端服务监听的端口,例如 8080
  6. Block Common Exploits (阻止常见攻击): 推荐勾选,提供基本的安全防护。
  7. Websockets Support (Websockets支持): 如果您的后端服务使用Websockets(如某些聊天应用),请勾选此项。
  8. 点击 “Save”

现在,当您访问 http://your-app.example.com 时,请求将被NPM转发到您的后端服务。

6.3 配置SSL证书 (Let’s Encrypt)

NPM与Let’s Encrypt集成,可以自动为您的域名申请和续订免费的SSL证书。

  1. 在添加或编辑代理主机时,切换到 “SSL” 标签页
  2. SSL Certificate (SSL证书): 选择
  3. Force SSL (强制SSL): 推荐勾选,这将强制所有HTTP请求重定向到HTTPS。
  4. Email Address for Let’s Encrypt (Let’s Encrypt邮箱地址): 输入您的邮箱地址,用于接收证书通知。
  5. I Agree to the Let’s Encrypt Terms of Service (我同意Let’s Encrypt服务条款): 勾选此项。
  6. HTTP/2 Support (HTTP/2支持): 推荐勾选,提供更快的性能。
  7. 点击 “Save”

NPM将尝试为您的域名申请SSL证书。这个过程可能需要一些时间。如果一切顺利,您的代理主机将通过HTTPS访问。

重要提示: 确保您的域名DNS记录已正确指向NPM服务器的公共IP地址,并且服务器的80和443端口是开放的,这样Let’s Encrypt才能验证您的域名。

7. 停止与删除

  • 停止服务: 在 docker-compose.yml 所在的目录下运行:
    bash
    docker compose stop
  • 停止并删除容器(保留数据卷):
    bash
    docker compose down
  • 停止并删除所有容器、网络和数据卷(彻底删除): 请谨慎操作,这将删除所有配置和数据库数据!
    bash
    docker compose down -v

8. 总结

Nginx Proxy Manager结合Docker Compose提供了一个极其强大且用户友好的反向代理解决方案。它简化了复杂的Nginx配置和SSL证书管理,使部署Web应用程序变得前所未有的简单。无论是个人项目还是小型团队,NPM都是一个值得考虑的工具。通过遵循本文的指南,您应该能够成功安装并开始使用Nginx Proxy Manager,为您的服务提供安全、高效的访问。
“`

滚动至顶部