记录时间:2026-07-29
今天维护自己的服务器时,遇到了一个比较典型的 Docker + 反向代理问题。
起因只是一次普通的 OpenList 升级,但升级完成几个小时后,访问突然出现
502 Bad Gateway。经过一轮排查,最终发现问题并不在 OpenList 程序本身,而是 Docker 容器网络变化导致 1Panel 反向代理失效。
记录这次踩坑过程,希望以后自己遇到类似问题时可以快速定位,也希望能帮助遇到同样问题的人。
环境介绍
我的部署环境:
Linux VPS
1Panel 面板
Docker
OpenResty(Nginx)
OpenList 网盘程序
整体访问链路:
TEXT
用户浏览器
↓
HTTPS 域名
↓
OpenResty
↓
Docker OpenList 容器
↓
OpenList 服务
正常情况下:
TEXT
https://你的域名
应该直接访问 OpenList 页面。
问题出现
今天登录 OpenList 后,发现官方提示有新版本。
于是直接点击升级。
升级过程看起来没有异常:
容器正常启动
OpenList 服务正常运行
后台也可以正常打开
当时没有继续检查。
几个小时后,再次访问网站:
TEXT
502 Bad Gateway
页面无法打开。
第一步:确认是不是 OpenList 挂了
遇到 502,第一反应通常是:
后端服务是不是停止了?
于是检查 Docker:
BASH
docker ps
发现 OpenList 容器状态:
TEXT
Up
说明:
✅ 容器正在运行
并不是 OpenList 崩溃。
第二步:检查 OpenList 本身是否正常
测试本机端口:
BASH
curl -I http://127.0.0.1:5244
返回:
TEXT
HTTP/1.1 405 Method Not Allowed
刚开始看到 405 可能会误以为服务异常。
但实际上:
curl -I
发送的是 HEAD 请求。
而 OpenList 对 HEAD 请求返回 405 是正常现象。
继续测试:
BASH
curl http://127.0.0.1:5244
可以正常返回内容。
说明:
✅ OpenList 服务正常
第三步:检查 OpenResty
既然:
Docker 正常
OpenList 正常
那么问题范围缩小到了:
TEXT
OpenResty → OpenList
这一段。
查看 OpenResty 当前配置:
BASH
nginx -T
发现反向代理配置:
NGINX
location / {
proxy_pass http://172.xx.xx.xx:5244;
}
这里出现了问题。
真正原因:Docker 容器 IP 发生变化
原来的连接:
TEXT
OpenResty
↓
172.xx.xx.xx:5244
↓
OpenList
但是升级 OpenList 后:
Docker 重新创建了容器。
新的容器网络地址发生变化。
例如:
升级前:
TEXT
OpenList
172.xx.xx.2:5244
升级后:
TEXT
OpenList
172.xx.xx.3:5244
但是 OpenResty 仍然访问旧地址:
TEXT
172.xx.xx.2:5244
结果:
TEXT
OpenResty
↓
旧 IP
↓
无法连接
↓
502 Bad Gateway
为什么会出现这种问题?
因为 Docker 容器 IP 默认不是固定的。
很多人在配置反向代理时,会直接填写:
NGINX
proxy_pass http://172.xx.xx.xx:5244;
短期看没有问题。
但是:
容器重启
容器升级
容器重新创建
都有可能导致 IP 改变。
一旦 IP 变化:
反向代理就失效。
最后的解决方法
我的处理方式:
在 1Panel 中重新创建 OpenList 的反向代理。
让 1Panel 重新生成代理配置。
重新配置后:
访问恢复正常。
更推荐的解决方式
不要直接使用 Docker 容器 IP
错误方式:
NGINX
proxy_pass http://172.xx.xx.xx:5244;
因为 IP 可能变化。
推荐方式一:使用 Docker 网络名称
例如:
NGINX
proxy_pass http://openlist:5244;
或者:
NGINX
proxy_pass http://容器名称:5244;
这样 Docker 会自动解析容器地址。
推荐方式二:使用宿主机映射端口
例如:
Docker:
TEXT
宿主机:5244
↓
容器:5244
反向代理:
NGINX
proxy_pass http://宿主机地址:5244;
这样容器内部 IP 怎么变化都不会影响。
这次踩坑总结
1. 502 不一定代表应用挂了
遇到 502:
不要第一时间重启。
应该按层排查:
TEXT
域名
↓
SSL
↓
OpenResty
↓
反向代理
↓
Docker
↓
应用服务
2. Docker 容器 IP 不适合作为长期配置
容器 IP 是动态资源。
不要把它当成固定地址使用。
3. 升级 Docker 应用前最好检查配置
升级前:
查看反向代理:
BASH
nginx -T | grep proxy_pass
备份配置:
BASH
cp openlist.conf openlist.conf.backup
避免升级后出现问题无法快速恢复。
最后的记录
今天这次故障花了一些时间排查。
从最开始看到 502,到确认:
OpenList 服务正常
Docker 正常
OpenResty 正常
最终定位到反向代理配置问题
整个过程也让我更加理解:
自动化部署虽然方便,但底层的网络关系依然需要理解。
记录每一次踩坑,不只是为了修复当前的问题。
更重要的是:
下一次遇到类似情况,可以更快找到答案。


