issue: SearXNG web search returns no usable results (debug log shows only the base query URL)

该问题通常发生在 Open WebUI 通过 Docker(默认 bridge 网络)部署、而 SearXNG 配置使用了 127.0.0.1 等容器内部地址时,导致请求无法到达 SearXNG 实例。优先检查 SearXNG URL 是否可被 Open WebUI 容器访问,以及 SearXNG

快速结论:该问题通常发生在 Open WebUI 通过 Docker(默认 bridge 网络)部署、而 SearXNG 配置使用了 127.0.0.1 等容器内部地址时,导致请求无法到达 SearXNG 实例。优先检查 SearXNG URL 是否可被 Open WebUI 容器访问,以及 SearXNG 是否已启用 JSON 格式输出。

适用环境:Open WebUI(Docker 安装)、Debian Trixie、SearXNG(Docker 或脚本安装)、Ollama。Issue 中未提及具体 Open WebUI 版本号。

最快修复方案:暂无确认的一步修复方案。但根据维护者分析,将 SearXNG 搜索 URL 改为 Docker 服务名(如 http://searxng:8080/search)或宿主机可访问地址(如 http://host.docker.internal:8080/search),并确认 SearXNG 配置了 search.formats: [json],是此类场景下最可能有效的调整。

注意事项:上述方案基于维护者对代码逻辑的分析,并非 Issue 中实际验证过的修复结果;如果调整后仍失败,需要提供 searching ... 日志之后的实际客户端错误信息以继续排查。

问题场景

用户在 Debian Trixie 上通过 Docker 安装 Open WebUI,同时安装 SearXNG(Docker 或脚本方式)和 Ollama。在 Open WebUI 后台将 SearXNG 搜索 URL 配置为 http://127.0.0.1:80/searxng/search 并启用 Web 搜索后,执行搜索请求,但 SearXNG 始终无法返回可用结果。

报错原文

issue: SearXNG web search returns no usable results (debug log shows only the base query URL)
# debug log only shows the base query URL, no query parameters appended
# SearXNG returns no usable results regardless of the query

原因分析

根据维护者在 Issue 中的分析,最可能的原因有以下几个:

  • 网络可达性问题(最可能):Open WebUI 以 Docker 默认 bridge 网络运行时,配置中的 127.0.0.1 指向的是 Open WebUI 容器自身,而非宿主机或其他容器。容器内端口 80 没有服务监听,请求自然无法到达 SearXNG。
  • 对 debug 日志的误解:维护者指出,调试日志中 log.debug('searching %s', query_url) 这行代码在构建请求之前执行,只打印基础 URL,查询参数(qformat=json 等)是在之后由 HTTP 客户端附加到 GET 请求上的。因此日志中看不到参数并不代表查询被丢弃——即使功能正常时也会这样显示。
  • SearXNG 未启用 JSON 格式:SearXNG 的 settings.ymlsearch.formats 必须包含 json,否则 SearXNG 会返回 403,导致 Open WebUI 无法获取结果。

环境排查

  • 确认 Open WebUI 和 SearXNG 是否运行在同一 Docker 网络中;如果是,使用服务名而非 127.0.0.1
  • 确认 SearXNG 是否监听在可被 Open WebUI 容器访问的端口上(例如 8080 而非 80)。
  • 检查 SearXNG 的 settings.ymlsearch.formats 是否包含 json
  • 在 Open WebUI 容器内手动执行 curl 测试 SearXNG 端点是否可达且返回 JSON。
  • 确认 SearXNG 的日志和 Open WebUI 容器日志中是否有额外的错误信息。

解决步骤

  1. 调整 SearXNG 搜索 URL:将配置中的 http://127.0.0.1:80/searxng/search 改为 Docker 服务名,例如 http://searxng:8080/search(如果 SearXNG 是独立容器);如果 SearXNG 运行在宿主机,则改为 http://host.docker.internal:8080/search
  2. 确认 SearXNG 的 settings.ymlsearch.formats 包含 json,添加后重启 SearXNG 生效。
  3. 在 Open WebUI 容器内执行 curl "http://<searxng-address>/search?q=test&format=json",确认能返回 JSON 结果。
  4. 重新执行 Web 搜索,并检查 Open WebUI 容器日志中 searching ... 之后是否有新的错误信息。

验证方法

成功时表现为:Open WebUI 的 Web 搜索能正常返回 SearXNG 的搜索结果;Open WebUI 日志在 searching ... 行之后不再出现连接错误或 403 等异常信息。如果问题仍然存在,请将日志中 searching 之后的实际错误输出贴出以便进一步定位。

参考来源

open-webui/open-webui #28370

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 19630

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注