Ubuntu24+Docker部署反向代理
Ubuntu 24 + Docker 部署反向代理完整指南
前言
在部署 Nextcloud 等容器化服务时,反向代理是一个至关重要的组件。它不仅能简化访问方式,还能提供 HTTPS 自动化和多服务统一入口等强大功能。本文将详细介绍在 Ubuntu 24 系统上使用 Docker 部署反向代理的完整流程。
🧭 什么是反向代理?
反向代理是客户端与后端服务器之间的”中间人”,负责将客户端请求转发到内部服务。
简化理解
1 | 浏览器 -> 反向代理 (Nginx / Caddy / Traefik) |
实际示例:
- 你访问
https://cloud.ncy.cn - 反向代理(Nginx/Traefik)将请求转发到
http://172.17.0.1:8080(Nextcloud 容器内部端口) - 外部无法直接访问容器 IP(172.18.x.x),但代理可以访问
🔍 反向代理 vs /etc/hosts 对比
| 功能 | /etc/hosts |
反向代理 |
|---|---|---|
| 本地域名解析 | ✅ 仅在本机有效 | ✅ 通常配合 DNS 使用 |
| 自动 HTTPS | ❌ 手动配置麻烦 | ✅ 自动申请 Let’s Encrypt |
| 多服务端口复用 | ❌ 一个端口只能绑一个服务 | ✅ 支持虚拟主机与路径转发 |
| 外部访问 | ❌ 仅限本地 | ✅ 可被公网访问 |
| 容器网络 | ❌ 不能跨容器解析 | ✅ Docker 网络内自动识别 |
🧠 核心优势:反向代理比
/etc/hosts灵活得多,特别适合 Nextcloud AIO、Rocket.Chat、Portainer 等多容器应用场景。
🚀 部署方案选择
在 Ubuntu 24 中,我们推荐两种主流部署方式:
✅ 方案 A:Nginx Proxy Manager(最推荐)
- 可视化 Web 管理界面
- 自动申请和管理 HTTPS 证书(Let’s Encrypt)
- 容器内即可代理多个服务
- 适合初学者和中级用户
✅ 方案 B:Traefik(专业方案)
- 自动发现 Docker 容器并配置代理
- 自动管理 SSL 证书与子域名
- 配置相对复杂但功能更强大
- 适合有经验的用户
下面重点介绍 方案 A:Nginx Proxy Manager 的完整部署流程。
🧩 部署步骤详解
第 1 步:创建专用 Docker 网络
创建独立的 Docker 网络,让反向代理和所有服务在同一个网络中通信:
1 | docker network create proxy |
验证网络创建成功:
1 | docker network ls | grep proxy |
第 2 步:部署 Nginx Proxy Manager
创建项目目录和必要的子目录:
1 | mkdir -p ~/nginx-proxy-manager/{data,letsencrypt} |
创建 docker-compose.yml 文件:
1 | nano docker-compose.yml |
写入以下配置内容:
1 | version: '3' |
启动 Nginx Proxy Manager:
1 | docker compose up -d |
检查服务状态:
1 | docker ps | grep nginx-proxy-manager |
第 3 步:访问并配置管理界面
打开浏览器访问管理界面:
1 | http://服务器IP:81 |
默认登录信息:
- 邮箱:
admin@example.com - 密码:
changeme
首次登录后,系统会强制要求修改密码和邮箱,请务必设置强密码。
第 4 步:部署 Nextcloud AIO 并加入代理网络
修改原有的 Nextcloud AIO 部署命令,加入代理网络:
1 | sudo docker run \ |
关键变化:
- 移除端口映射
-p 8080:8080 - 添加网络配置
--network proxy - 服务将通过反向代理访问,不再直接暴露端口
第 5 步:配置代理规则
在 Nginx Proxy Manager 中配置 Nextcloud 代理:
登录
http://服务器IP:81点击 “Proxy Hosts” → “Add Proxy Host”
填写代理配置:
Details 选项卡:
- Domain Names:
cloud.ncy.cn(你的实际域名) - Scheme:
http - Forward Hostname / IP:
nextcloud-aio-mastercontainer - Forward Port:
11000 - Block Common Exploits: ✅ 启用
- Websockets Support: ✅ 启用(如需实时功能)
- Cache Assets: ✅ 启用(提升性能)
SSL 选项卡:
- 选择 “Request a new SSL Certificate”
- 勾选 “Force SSL”(强制 HTTPS)
- 勾选 “HTTP/2 Support”
- 填写有效的邮箱地址(证书通知用)
- 勾选 “I agree to the Let’s Encrypt Terms of Service”
- Domain Names:
点击 Save 保存配置
🔐 访问你的 Nextcloud 服务
配置完成后,你可以直接访问:
1 | https://cloud.ncy.cn |
系统将自动:
- 通过 HTTPS 加密连接
- 反向代理到 Nextcloud AIO 容器
- 提供安全的公网访问能力
🧰 进阶功能配置
自定义 Nginx 配置
在 Advanced 选项卡中添加自定义配置:
1 | # 优化文件上传大小限制 |
多服务代理配置
你可以继续添加其他服务的代理规则:
| 服务 | 域名 | 容器名 | 端口 |
|---|---|---|---|
| Rocket.Chat | chat.ncy.cn |
rocketchat |
3000 |
| Portainer | docker.ncy.cn |
portainer |
9000 |
| Vaultwarden | vault.ncy.cn |
vaultwarden |
80 |
日志查看与故障排查
- 实时日志:Proxy Manager → Logs
- 容器日志:
docker logs nginx-proxy-manager - 配置备份:定期备份
~/nginx-proxy-manager/data目录
🔄 整合部署方案
如果你希望一键部署所有服务,可以使用以下整合的 docker-compose.yml:
1 | version: '3.8' |
部署命令:
1 | mkdir -p npm/{data,letsencrypt} |
🧩 方案对比总结
| 项目 | 无反向代理 | 有反向代理 |
|---|---|---|
| HTTPS 自动化 | ❌ 手动配置 | ✅ 自动申请和续期 |
| 多服务共存 | ❌ 端口冲突 | ✅ 基于域名路由 |
| 跨容器访问 | ❌ 复杂配置 | ✅ 网络内自动发现 |
| 安全性 | 一般 | 高(统一安全策略) |
| 配置复杂度 | 简单 | 中等(长期收益大) |
| 维护成本 | 高 | 低 |
💡 最佳实践建议
域名准备:提前准备有效的域名并配置 DNS 解析
证书管理:定期检查 Let’s Encrypt 证书状态
备份策略:定期备份 NPM 的 data 目录
安全加固:
- 修改默认管理端口(81 → 其他端口)
- 设置强密码和双因素认证
- 定期更新容器镜像
性能监控:配置日志监控和性能指标收集
结语
通过本文的详细指导,你可以在 Ubuntu 24 系统上成功部署功能完整的反向代理服务。Nginx Proxy Manager 提供了用户友好的管理界面,让复杂的反向代理配置变得简单直观。无论是个人项目还是生产环境,这套方案都能提供稳定可靠的服务代理能力。
下一步建议:在掌握基础部署后,可以进一步探索负载均衡、缓存优化、安全策略等高级功能,构建更加健壮的服务架构。
