返回博客

用 SearXNG 自建搜索上游

不想把查询交给第三方搜索 API?SearXNG 是自托管的元搜索引擎,聚合 70+ 引擎,零密钥成本。本文讲清怎么接进 WebSearch。

2026年9月14日WebSearch 团队WebSearch 团队

用 SearXNG 自建搜索上游

WebSearch 的搜索层是可插拔的:Brave、Serper、Exa 都是托管服务,按量付费、开箱即用。但有一种场景它们都不合适——查询不想出内网。比如处理内部资料、合规要求数据不出域,或者单纯不想为每次搜索付上游费用。

这时答案是 SearXNG:一个自托管的元搜索引擎,聚合 Google、Bing、DuckDuckGo 等 70+ 引擎的结果,本身不需要任何 API 密钥。

部署一个实例

Docker 一行起:

docker run -d -p 8888:8080 \
  -v ./searxng:/etc/searxng \
  searxng/searxng

关键一步是开启 JSON 输出——SearXNG 默认只渲染 HTML。编辑 searxng/settings.yml:

search:
  formats:
    - html
    - json

重启后验证:

curl 'http://localhost:8888/search?q=test&format=json'

返回 JSON 就说明实例就绪。

接进 WebSearch

管理后台 → 搜索 页面,三项配置:

  • Provider 选 SearXNG
  • SearXNG 实例地址 填 http://your-host:8888(内网 IP 也可以,比如 http://10.x.x.x:8888)
  • SearXNG 语言 可选,填 zh-CN 会作为 language 参数下发

保存后用页面上的连通性测试跑一次真实查询,能看到 provider、耗时和前几条结果。测试不扣积分、不写日志。

和托管 API 的取舍

SearXNGBrave / Serper / Exa
上游费用无按量
部署运维自己维护零运维
数据走向不出你的网络查询发给第三方
结果质量取决于聚合的引擎独立索引,质量稳定
可用性单点,需自己保障SLA 保障

实际项目里两者不冲突:SearXNG 当默认,托管 API 留作凭据备用——WebSearch 在所选 provider 缺配置时会自动回退到任何已配置的 provider,切换只是管理后台的一次下拉选择。

注意事项

  • 网络可达性:SearXNG 地址是服务端直接请求的,部署 WebSearch 的机器必须能访问该地址。内网实例意味着公网部署(如 Cloudflare Workers)够不到它。
  • SSRF 边界:SearXNG 地址属于管理员配置的可信基础设施,不受 Extract 的 SSRF 黑名单限制——那套防护只针对用户提交的 Extract URL。
  • 限流:SearXNG 聚合的上游引擎各有频率限制,并发高时在 SearXNG 侧调 limiter 配置。