Docker 部署宝塔面板 Nginx 反向代理 502 踩坑实录
一、问题描述
最近在使用 Docker 部署宝塔面板,配置 Nginx 反向代理宿主机端口服务时,遇到以下问题:
- 访问
127.0.0.1:20000/api报 502 Bad Gateway - 宿主机直接访问
6688 / 6689端口正常 - 日志/页面提示:
invalid link、link 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 都能通
本地能用,云服务器也能用