插件窝 干货文章 Nginx Proxy Manager与Docker的完美结合:快速搭建容器化应用

Nginx Proxy Manager与Docker的完美结合:快速搭建容器化应用

Docker 容器 Proxy 代理 151    来源:    2025-04-11

Nginx Proxy Manager与Docker的完美结合:快速搭建容器化应用

概述

Nginx Proxy Manager (NPM) 是一个基于Docker的轻量级反向代理管理工具,它提供了直观的Web界面来管理Nginx代理设置,特别适合在容器化环境中使用。本指南将介绍如何将Nginx Proxy Manager与Docker结合使用,快速搭建和管理容器化应用。

为什么选择Nginx Proxy Manager + Docker组合

  1. 简化配置:通过Web界面管理代理规则,无需手动编辑Nginx配置文件
  2. SSL证书自动化:内置Let's Encrypt支持,自动获取和续订SSL证书
  3. 容器友好:原生支持Docker环境,轻松代理其他容器服务
  4. 轻量高效:基于Nginx的高性能代理解决方案
  5. 开源免费:完全开源且免费使用

快速安装指南

1. 准备工作

确保已安装Docker和Docker Compose。如果没有安装,可以使用以下命令:

# 安装Docker
curl -fsSL https://get.docker.com | sh

# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

2. 创建Nginx Proxy Manager的Docker Compose文件

创建docker-compose.yml文件:

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    environment:
      DB_SQLITE_FILE: "/data/database.sqlite"
      DISABLE_IPV6: "true"

3. 启动Nginx Proxy Manager

docker-compose up -d

4. 访问管理界面

打开浏览器访问 http://服务器IP:81,使用以下默认凭据登录: - 邮箱: admin@example.com - 密码: changeme

首次登录后请立即更改密码。

配置代理规则

1. 代理基本的HTTP服务

  1. 在NPM管理界面点击"Proxy Hosts"
  2. 点击"Add Proxy Host"
  3. 填写:
    • Domain Names: 您的域名 (如app.example.com)
    • Scheme: http
    • Forward Hostname/IP: 目标容器名称或IP
    • Forward Port: 目标容器端口
  4. 保存设置

2. 启用SSL证书

  1. 编辑已创建的代理主机
  2. 切换到"SSL"选项卡
  3. 选择"Let's Encrypt"
  4. 输入有效的邮箱地址
  5. 勾选"同意条款"
  6. 保存设置,NPM将自动获取并配置SSL证书

3. 代理Docker容器服务

对于Docker容器,最佳实践是使用Docker网络:

  1. 创建一个共享网络:

    docker network create proxy-network
    
  2. 修改NPM的docker-compose.yml,加入网络:

    networks:
     default:
       name: proxy-network
    
  3. 对于需要代理的容器,在它们的docker-compose.yml中也加入同一网络:

    networks:
     default:
       name: proxy-network
    
  4. 现在在NPM中可以使用容器名称作为"Forward Hostname"

高级配置技巧

1. 自定义Nginx配置

NPM允许添加自定义Nginx配置片段:

  1. 在代理主机配置中,切换到"Advanced"选项卡
  2. 添加自定义Nginx配置,例如: nginx location /api { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }

2. 访问控制

可以为代理主机设置基本认证:

  1. 在NPM界面导航到"Access Lists"
  2. 创建新的访问控制列表
  3. 添加用户名和密码
  4. 在代理主机配置中应用此访问列表

3. 重定向和自定义错误页面

  1. 在NPM界面导航到"Redirection Hosts"或"Custom Locations"
  2. 设置URL重定向规则
  3. 可以配置自定义404等错误页面

常见问题解决

1. 502 Bad Gateway错误

  • 检查目标容器是否运行正常
  • 确认目标端口是否正确
  • 检查NPM和目标容器是否在同一Docker网络中

2. SSL证书问题

  • 确保域名解析正确指向服务器
  • 检查防火墙是否开放80和443端口(Let's Encrypt验证需要)
  • 确保邮箱地址有效

3. 性能优化

  • 对于高流量站点,考虑调整Nginx缓冲设置: nginx proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k;
  • 启用HTTP/2支持
  • 考虑启用Brotli或Gzip压缩

监控与维护

1. 日志查看

查看NPM容器日志:

docker-compose logs -f

2. 备份配置

定期备份NPM的数据目录(docker-compose.yml中映射的./data和./letsencrypt目录)

3. 更新NPM

更新到最新版本:

docker-compose pull
docker-compose up -d

结语

Nginx Proxy Manager与Docker的结合为容器化应用提供了简单高效的代理解决方案,大大简化了反向代理和SSL证书管理的复杂度。通过Web界面,即使不熟悉Nginx配置的用户也能轻松管理多个服务的代理规则,是现代化容器部署的理想选择。