Dify长任务2分钟中断及SSRF代理超时修复全指南

Dify长任务2分钟中断及SSRF代理超时修复全指南

Dify 1.11.4 长任务强制断开及SSRF代理超时Bug修复指南

一、问题描述

运行环境

  • 版本:Dify v1.11.4
  • 部署:Docker Compose自托管
  • 场景:执行15分钟~3小时的工作流任务

故障现象

  1. 后端任务能完整执行并产生结果
  2. 前端15分钟后自动断开连接
  3. ssrf_proxy日志报错:TCP_MISS_ABORTED/000
  4. 已配置各层超时为3小时无效

无效配置尝试

.env文件已设置:

HTTP_REQUEST_MAX_READ_TIMEOUT=10800 HTTP_REQUEST_MAX_WRITE_TIMEOUT=10800 APP_MAX_EXECUTION_TIME=10800 WORKFLOW_MAX_EXECUTION_TIME=10800 GUNICORN_TIMEOUT=10800 NGINX_PROXY_READ_TIMEOUT=10800s NGINX_PROXY_SEND_TIMEOUT=10800s

二、根本原因

  1. ssrf_proxy基于Squid实现,其配置模板硬编码2分钟超时
  2. 环境变量无法影响Squid层配置
  3. 仅重启容器不会更新Squid配置

三、修复方案

1. 备份配置文件

cd /dify路径/docker/ssrf_proxy cp squid.conf.template squid.conf.template.bak

2. 修改超时配置

编辑squid.conf.template:

connect_timeout 30 seconds request_timeout 180 minutes read_timeout 180 minutes client_lifetime 240 minutes shutdown_lifetime 30 seconds

3. 重建镜像

docker compose down docker compose build --no-cache ssrf_proxy docker compose up -d

4. 验证配置

docker exec -it dify-ssrf_proxy-1 bash cat /etc/squid/squid.conf | grep timeout

四、完整配置清单

  1. .env保持原超时设置
  2. Squid代理层新增配置

五、后续建议

  1. 关注官方PR #32483进展
  2. 升级到包含该修复的新版本
  3. 生产环境升级前检查代理配置

六、经验总结

  1. 排查顺序:Nginx→Gunicorn→Dify→SSRF代理
  2. 修改模板后必须重建镜像
  3. 长任务必须同步调整Squid超时

参考链接:

  • GitHub Issue: https://github.com/langgenius/dify/issues/33149
  • PR: https://github.com/langgenius/dify/pull/32483