快速结论:该报错发生在 Dify 知识库流水线处理包含无效相对路径 Markdown 图片引用时。优先排查方向:核对待处理文档中的图片引用是否包含非绝对 HTTP(S) 协议路径,以及知识库流水线中 Markdown 文档的上传清单。核心英文报错为:Invalid relative Markdown image paths are repeatedly retried and block knowledge indexing。
适用环境:Dify 1.16.1(Self-hosted Kubernetes/Helm 部署,容器镜像基于 Dify 1.16.1);已确认场景使用 Docker 自托管部署。
最快修复方案:暂无确认的一步修复方案。Issue 中提出的代码修改(在 _download_image 前增加 URL scheme 校验、下载前先去重)属于社区建议,尚未在 Issue 内提供经过验证的补丁或官方修复版本。
注意事项:此问题核心是处理包含大量相对路径图片引用的 Markdown 文档(如 9.35 MB、1772 个引用、886 个唯一路径)时,会触发完整的重试机制,阻塞队列。若需临时规避,可等待官方修复或考虑在上述代码修复合入前,先检查并预处理上传文档中的无效图片引用。
问题场景
用户在 Dify 知识库流水线中,通过本地文件数据源上传包含无效或不可用相对路径图片引用的 Markdown 文档。流水线包含本地文件数据源、Dify Extractor、父子分块节点、知识库输出节点。问题触发于处理大量(1,772 个)引用、且所有图片路径均为相对且不可用(缺失 http:// 或 https:// 协议)的 Markdown 文档场景。
报错原文
Request to URL document_images/<image>.jpg failed on attempt 1:
Request URL is missing an 'http://' or 'https://' protocol.
Request to URL document_images/<image>.jpg failed on attempt 2:
Request URL is missing an 'http://' or 'https://' protocol.
Request to URL document_images/<image>.jpg failed on attempt 3:
Request URL is missing an 'http://' or 'https://' protocol.
Request to URL document_images/<image>.jpg failed on attempt 4:
Request URL is missing an 'http://' or 'https://' protocol.
MaxRetriesExceededError:
Reached maximum retries (3) for URL document_images/<image>.jpg
原因分析
可能原因:IndexProcessorBase._get_content_files() 处理 Markdown 图片引用时,会先匹配 Dify 内部文件 URL 模式(如 /files/.../file-preview)。未匹配到内部模式的图片引用全部落入 _download_image() 分支,而该方法在发起 SSRF 代理请求前,没有校验目标 URL 是否为绝对 HTTP(S) 地址。无效相对路径在 SSRF 代理层触发最多 3 次重试(指数退避 0.5 秒、1 秒、2 秒)后才抛出 MaxRetriesExceededError。此外,下载循环没有预先去重,相同无效路径的重复出现会再次触发请求尝试。在单并发 Celery worker 场景下,后续文档会持续处于 Queuing 状态。
环境排查
- Dify 版本是否为 1.16.1(或其他版本)
- 上传 Markdown 文档中的图片引用是否包含绝对
http://或https://协议 - 图片引用是否被识别为 Dify 内部文件 URL(
/files/.../file-preview等模式) - 文档中图片引用总量及唯一路径数量
- Celery worker 并发配置(是否单并发)
- 相关底层文件:
index_processor_base.py、remote_fetcher.py、SSRF 代理配置
解决步骤
- 代码层修复建议(可优先尝试):在
api/core/rag/index_processor/index_processor_base.py中,在if current_user:的回退分支前增加 URL scheme 校验。使用模块已导入的urlparse判断图片引用是否为绝对 HTTP(S) URL,非 HTTP(S) 或缺少 netloc 的引用跳过并记录 WARNING 日志。 - 下载前先去重(可优先尝试):在下载循环之前对图片 URL 进行去重,循环结束后恢复重复项以保持
SegmentAttachmentBinding计数正确。 - 临时规避方案:在上传前预处理 Markdown 文档,确保所有图片引用为有效的绝对 HTTP(S) URL,或直接移除文档中无效的相对图片引用。
- 等待官方修复:该问题需要官方合入代码补丁解决,可关注 Issue #41332 后续状态和 Dify 新版本发布。
验证方法
确认修复是否有效:上传包含大量无效相对图片引用的 Markdown 文档,观察 worker 日志不再出现大量 Request URL is missing an 'http://' or 'https://' protocol. 报错;文档创建和索引处理时间恢复正常范围;在单并发 Celery worker 场景下,后续上传的文档不再长时间处于 Queuing 状态。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![[Bug] Gmail trigger silently stops after 7 days: subscription expires_at is persisted as -1](https://www.chat-gpts.plus/wp-content/uploads/2026/09/41162-d3216684-768x403.jpg)
