Traefik代理OpenSpeedTest上传测试报net::ERR_CONNECTION_RESET错误
问题背景
尝试部署openspeedtest的Docker镜像,该镜像HTTP服务默认监听3000端口,HTTPS服务默认监听3001端口。仅需在局域网环境下使用HTTP版本服务,但上传测试过程中,浏览器控制台出现HTTP POST请求net::ERR_CONNECTION_RESET报错。
报错截图如下:
初始使用的docker-compose配置如下:
version: "3.3" services: traefik: image: "traefik:v2.8" container_name: "traefik" command: - "--log.level=DEBUG" - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" ports: - "5000:80" - "5001:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" openspeedtest: image: "openspeedtest/latest" container_name: "speedtest-service" labels: - "traefik.enable=true" - "traefik.http.routers.openspeedtest.rule=Host(`unraid.vishnu.pro`)" - "traefik.http.routers.openspeedtest.entrypoints=web"
故障原因
- 配置中未显式指定openspeedtest的后端服务端口,Traefik默认读取容器暴露的第一个端口,存在误识别到3001 HTTPS端口的概率,导致HTTP代理请求连接异常重置
- Traefik默认对请求体大小设置了1MB上限,测速上传场景下POST请求体体积远大于该阈值,请求会被Traefik直接中断
- Traefik默认空闲连接超时时间较短,大体积上传过程中连接一旦触发空闲超时就会被主动断开
修复方案
调整docker-compose配置,补全端口声明、请求体限制规则、超时配置,修正后完整配置如下:
version: "3.3" services: traefik: image: "traefik:v2.8" container_name: "traefik" command: - "--log.level=DEBUG" - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.web.transport.respondingTimeouts.idleTimeout=300s" ports: - "5000:80" - "5001:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" openspeedtest: image: "openspeedtest/latest" container_name: "speedtest-service" labels: - "traefik.enable=true" - "traefik.http.routers.openspeedtest.rule=Host(`unraid.vishnu.pro`)" - "traefik.http.routers.openspeedtest.entrypoints=web" # 显式指定后端HTTP服务端口,避免端口识别错误 - "traefik.http.services.openspeedtest.loadbalancer.server.port=3000" # 配置中间件关闭请求体大小限制 - "traefik.http.routers.openspeedtest.middlewares=speedtest-buffering" - "traefik.http.middlewares.speedtest-buffering.buffering.maxRequestBodyBytes=0" - "traefik.http.middlewares.speedtest-buffering.buffering.memRequestBodyBytes=0"
操作步骤
- 保存配置后执行
docker-compose up -d重新部署服务栈 - 清除浏览器缓存后重新访问测速页面,上传测试即可正常运行
- 若仍存在断连问题,排查局域网内防火墙、路由设备是否存在长连接POST请求拦截规则
内容的提问来源于stack exchange,提问作者user3642342
相关产品推荐
相关产品推荐

