Docker 部署宝塔面板 Nginx 反向代理 502 踩坑实录

Docker 部署宝塔面板 Nginx 反向代理 502 踩坑实录

一、问题描述

最近在使用 Docker 部署宝塔面板,配置 Nginx 反向代理宿主机端口服务时,遇到以下问题:

  • 访问 127.0.0.1:20000/api502 Bad Gateway
  • 宿主机直接访问 6688 / 6689 端口正常
  • 日志/页面提示:invalid linklink dead

宿主机端口正常,但容器内 Nginx 代理不通,这是非常典型的 Docker 网络误区。


二、核心原因:99% 的人都错在这里

❌ 错误写法(添加反向代理宝塔默认生成)

nginx 复制代码
proxy_pass http://127.0.0.1:6688;

为什么错?

在 Docker 容器内部:

127.0.0.1 = 容器自己

不是宿主机!

容器访问自己的端口,当然找不到服务 → 直接 502。

三、正确方案:host.docker.internal

✅ 正确写法

nginx 复制代码
proxy_pass http://host.docker.internal:6688;

作用解释

host.docker.internal 是 Docker 官方内置的固定域名作用:让容器内部访问到宿主机

重启nginx即可

四、云服务器没有host.docker.internal

nginx 复制代码
proxy_pass http://host.docker.internal:6688;

替换为:

nginx 复制代码
proxy_pass http://172.17.0.1:6688;

172.17.0.1 = Docker 默认网关

宿主机 ↔ 所有容器 都能通过这个 IP 互相访问

不管 6688 / 6689 都能通

本地能用,云服务器也能用

相关推荐
lichenyang4531 天前
Docker 学习笔记(五):Docker Compose,用一个 YAML 启动前端、后端和 MongoDB
docker
lichenyang4531 天前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器
lichenyang4531 天前
Docker 学习笔记(三):Docker 网络、bridge、子网和容器互通
docker·容器
lichenyang4531 天前
Docker 学习笔记(二):docker run 的参数到底在控制什么?
docker·容器
Patrick_Wilson6 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy6 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭6 天前
运行你的第一个Docker容器
后端·docker·容器
宋均浩7 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
Avan_菜菜8 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
程序员老赵8 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程