当前位置: 首页 > news >正文

如何在 Docker Compose 中配置 Nginx 反向代理多个服务

在 Docker Compose 中配置 Nginx 反向代理多个服务,最稳妥的方式是通过自定义网络将 Nginx 容器与后端服务容器互通,并利用挂载配置文件实现路径路由。

先说结论:适合微服务或多服务并行部署场景,通过统一入口管理路由和负载均衡。

  • 适合:需要统一端口访问多个后端服务,或隐藏内部服务架构的场景。
  • 先准备:确保已安装 Docker 和 Docker Compose,并规划好服务间的网络通信。
  • 验收:通过外部请求验证路径转发是否正确,检查 Nginx 日志确认无报错。

命令速用版

如果你已经准备好了配置文件,可以直接使用以下命令启动服务:

docker-compose up -d

查看运行状态:

docker-compose ps

为什么会这样

Nginx 反向代理的核心作用是作为客户端与后端服务之间的“中间层”。在 Docker 环境中,容器默认网络隔离,外部无法直接访问所有服务端口。通过 Nginx 容器监听统一端口(如 80),内部通过 Docker 网络解析服务名(如 http://web1/),可以实现外部只暴露一个入口,内部灵活调度多个服务。

这种架构不仅隐藏了真实服务地址,提升安全性,还能在需要时轻松扩展后端实例数量,实现负载均衡。

分步处理

步骤 1:规划目录结构

建议在工作目录下创建以下文件结构,便于管理配置:

./project
├── docker-compose.yml
├── nginx.conf
├── web1/
└── web2/

步骤 2:编写 docker-compose.yml

定义 Nginx 服务和后端服务,并确保它们在同一自定义网络中。注意使用服务名而非 localhost 进行通信。

version: '3.8'
services:web1:image: nginx:latestcontainer_name: web1networks:- mynetworkweb2:image: nginx:latestcontainer_name: web2networks:- mynetworknginx-proxy:image: nginx:latestcontainer_name: nginx-proxyports:- "80:80"volumes:- ./nginx.conf:/etc/nginx/conf.d/default.confdepends_on:- web1- web2networks:- mynetwork
networks:mynetwork:

步骤 3:配置 Nginx 反向代理规则

创建 nginx.conf 文件,配置 location 块将不同路径转发到对应服务名。Docker 网络内部可以直接使用服务名作为域名。

server {listen 80;location /service1/ {proxy_pass http://web1/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}location /service2/ {proxy_pass http://web2/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}

步骤 4:启动服务

在 docker-compose.yml 所在目录执行启动命令。

怎么验证是否生效

1. 检查容器状态

使用 docker-compose ps 确认所有服务状态为 Up。

2. 测试路径转发

在宿主机或外部浏览器访问:

  • http://localhost/service1/ 应返回 web1 服务内容。
  • http://localhost/service2/ 应返回 web2 服务内容。

3. 查看日志

如有问题,查看 Nginx 容器日志排查:

docker-compose logs nginx-proxy

常见坑

1. 网络不通

确保 Nginx 容器和后端服务在同一个 networks 定义下。如果不在同一网络,Nginx 无法解析服务名。

2. 配置挂载错误

挂载配置文件时,确保宿主机路径正确。如果配置文件语法有误,Nginx 容器可能启动后立即退出。

3. 端口冲突

宿主机 80 端口可能被占用。如果冲突,可修改 ports 映射,如 "8080:80",访问时带上对应端口。

4. 服务名解析

proxy_pass 中不要写 localhost127.0.0.1,必须写 Docker Compose 中定义的服务名(如 web1)。

参考来源

  • 如何配置 Docker Compose 中的 Nginx 反向代理?
  • 实战 docker,构建 nginx 反向代理 tomcat,学习 link 和 docker-compose
  • Docker 部署 Nginx 代理多个服务:公网域名与内网 IP 场景全解
  • 使用 Docker 和 Nginx 实现反向代理:统一端口路由多服务的完整指南
  • 腾讯云开发者社区 - Nginx 反向代理负载均衡的容器化部署

原文链接:https://www.zjcp.cc/ask/9895.html

http://www.jsqmd.com/news/760525/

相关文章:

  • 基于AI与爬虫的个性化投资日报生成器:从知乎大V观点到持仓分析
  • 2026年无动力游乐设备技术解析:塑料组合滑梯、大型游乐设备、室内游乐设备、攀爬网游乐设备、木质滑滑梯、游乐设备定制选择指南 - 优质品牌商家
  • TMS320F28xxx DSP开发踩坑记:手把手教你解决‘内存放不下’的#10099-D报错
  • 南京厂房漏水修缮实测:老牌服务商的现场交付全记录 - 奔跑123
  • Windows任务栏美化革命:TranslucentTB透明化工具完全指南
  • 2026年5月新发布:郑州视力养护加盟优选品牌——视立美视光中心深度解析 - 2026年企业推荐榜
  • 2026自动洗车机技术分享:全自动洗车机定做、全自动洗车机定制、公交车洗车机定制、四川工地洗车机厂家、四川洗车机厂家选择指南 - 优质品牌商家
  • 工业软件的开发难度在哪儿?
  • MRIcroGL:跨平台医学影像可视化终极指南
  • Sherwood智能体开发框架:构建模块化AI协作系统的核心原理与实践
  • 别再死记硬背了!用这套‘一声二声’口诀,5分钟搞定26个字母自然拼读发音
  • 2026年汽车音响改装应用白皮书临潼区市场深度剖析:新城区汽车音响改装/未央区汽车音响升级/未央区汽车音响改装/选择指南 - 优质品牌商家
  • 蓝桥杯备赛避坑指南:从“彩灯控制器”真题看STC单片机开发中的5个常见误区
  • 2026燃气热水锅炉优质厂家推荐榜权威靠谱之选:节能环保锅炉、铸铝冷凝锅炉、锅炉安装、锅炉维修保养、高压电极锅炉选择指南 - 优质品牌商家
  • 8年Java后端工程师跨界AI:薪资翻倍?揭秘2026真实内幕与转型避坑指南!
  • 南京及周边防水施工技术解析 靠谱服务商筛选指南 - 奔跑123
  • 【无人机】无人机四轴飞行器的建模、模拟与控制,其轨迹与跟踪性能的可视化呈现附matlab代码
  • 500元起做本地生意,扬州商户都在用的小程序商城长这样
  • 内存取证…..
  • 这位教授正在让开源机器人走近更多人身边
  • 【研发类-AI和ML开发Skills】advanced-evaluation 技能
  • 南京及周边防水补漏技术指南:靠谱服务商怎么选 - 奔跑123
  • Go语言dotUI框架:声明式TUI开发,构建现代化终端界面
  • 3步解密微信聊天记录:轻松恢复被加密的珍贵数据
  • 2026年Q2酒店陶瓷餐具性价比服务商深度剖析:以怀仁陶瓷怀益瓷业为例 - 2026年企业推荐榜
  • 【读书笔记】逆向思维与心智防线:从《穷查理宝典》看高段位认知升级
  • 2026箱变专用空调技术解析:机房空调、机柜空调、水冷式螺杆机组、电控柜空调、电柜空调、电气柜空调、箱变专用空调选择指南 - 优质品牌商家
  • 基于开源套件构建企业级RAG系统:从上下文工程到工程化实践
  • VISJUDGE模型:数据可视化评估的技术原理与实践
  • 2026Q2茶园虫害测报仪优质品牌推荐指南:植物补光灯、农业虫害监测、可视化虫害监测设备、智能虫害监测设备、智能虫情性诱测报仪选择指南 - 优质品牌商家