# Open WebUI и SearXNG: почему веб-поиск возвращает 403

Источник: https://modelium.tech/zhurnal/open-webui-searxng-403-json/

Когда Open WebUI обращается к SearXNG за результатами в формате JSON, а этот формат запрещён в настройках SearXNG, сервис возвращает 403. Проверьте, что код пришёл именно от вашего SearXNG, затем добавьте `json` к разрешённым форматам и перезапустите сервис. Если 403 возвращает сайт из выдачи или прокси, эта настройка не поможет.

Если при веб-поиске в Open WebUI появляется **403 Forbidden**, сперва выясните, **кто** отказал в доступе. В одной частой ситуации запрос к собственному SearXNG — программе, собирающей результаты из поисковых систем, — просит ответ в формате JSON (структурированные данные), а этот формат на сервере не разрешён. Но тот же код могут вернуть прокси или найденный сайт; исправление ниже касается только ответа самого SearXNG. [s1](#src-s1) [s2](#src-s2) [s3](#src-s3)

**Инструкция по документации и коду, сверенным 29 октября 2026 года.** Редакция не запускала Open WebUI вместе с SearXNG и не измеряла успешность на вашем сервере. Это разбор для человека, у которого оба сервиса уже работают: нужен доступ к настройкам SearXNG и журналу ошибки. Конкретная модель, ОС и видеокарта здесь не задаются; настраивается веб-поиск, а не запуск модели. [s1](#src-s1) [s2](#src-s2)

## Как понять, что 403 вернул именно SearXNG?

Посмотрите сообщение об ошибке в Open WebUI и адрес запроса в журнале. Если там указано `403 Client Error: Forbidden` **при обращении к вашему SearXNG **`**/search**`, проверьте его настройки. Если поиск уже вернул список ссылок, но чтение отдельной найденной страницы закончилось 403, причина может быть на стороне внешнего сайта: включение JSON в SearXNG её не устранит. [s1](#src-s1) [s2](#src-s2)

В настройках Open WebUI откройте **Settings → Admin → Web Search**: движок поиска должен быть **searxng**, а его Query URL должен вести к доступному из Open WebUI адресу SearXNG с окончанием `/search`. Не вставляйте в это поле тестовый запрос: Open WebUI сам добавляет параметры `q` и `format=json`. Если сервисы работают в разных контейнерах, их адреса из вашего браузера и из контейнера Open WebUI могут различаться. [s2](#src-s2)

## Где разрешить JSON и что проверить после перезапуска?

- Найдите **фактически используемый** SearXNG файл `settings.yml` и сохраните копию перед изменением. В примере установки авторов Open WebUI через `searxng-docker` это `searxng/settings.yml`; у других установок путь может быть иным. [s2](#src-s2)

- В разделе `search` найдите список `formats`. Сохраните имеющийся `html` и добавьте к нему отдельным элементом `json` на том же уровне отступа: итоговый список содержит `- html` и `- json`. **Не заменяйте HTML на JSON** и не добавляйте второе поле `search`. Стандартный образец SearXNG разрешает только HTML; код отклоняет запрос запрещённого формата кодом 403. [s1](#src-s1) [s3](#src-s3) [s4](#src-s4)

- Сохраните файл и **перезапустите именно ваш SearXNG**. В варианте `searxng-docker` из официальной инструкции это повторный запуск его сервиса через Compose; если используется другая установка, следуйте её способу перезапуска. Затем запросите у **своего** SearXNG `/search` с параметрами `q=test` и `format=json` из сети, где находится Open WebUI. Например, **только если SearXNG доступен на этом же компьютере по порту 8080**, откройте в браузере `http://localhost:8080/search?q=test&format=json`; для отдельного контейнера или сервера замените адрес на реально доступный ему. Вместо 403 должен прийти ответ в JSON; это проверка формата, а не качества найденных страниц. Не публикуйте тестовый экземпляр в открытый интернет ради проверки. [s1](#src-s1) [s2](#src-s2) [s3](#src-s3)

- Повторите веб-поиск в Open WebUI и убедитесь, что появились результаты. Если прямой JSON-запрос работает, а приложение всё ещё выдаёт 403, проверьте URL подключения, журналы прокси и точный адрес отказа. Не делайте вывод о причине только по числу 403. [s1](#src-s1) [s2](#src-s2)

## Что остаётся за пределами этой настройки?

Поиск через SearXNG обращается к внешним поисковым системам, а Open WebUI может отдельно загружать найденные страницы: даже если сама чат-модель локальна, **весь сценарий не становится офлайн**. Ошибки доступа к сторонним сайтам, настройка прокси и ограничения источников требуют отдельной диагностики. Этот текст не утверждает, что мы воспроизвели исправление на конкретной ОС или модели. Для контраста откройте [разбор офлайн-режима Open WebUI](/zhurnal/open-webui-offline-mode/); чтобы снова настроить интерфейс, перейдите к [Open WebUI](/zhurnal/open-webui/). [s1](#src-s1) [s2](#src-s2)

## Источники

1. [Open WebUI Docs — Web Search Troubleshooting, закреплённая ревизия](https://github.com/open-webui/docs/blob/f49837687d164a2697c48556172abe694a64a5b0/docs/troubleshooting/web-search.mdx#L44-L59) — получено 2026-10-29
2. [Open WebUI Docs — SearXNG provider, закреплённая ревизия](https://github.com/open-webui/docs/blob/f49837687d164a2697c48556172abe694a64a5b0/docs/features/chat-conversations/web-search/providers/searxng.md#L268-L346) — получено 2026-10-29
3. [SearXNG — проверка выходного формата в webapp.py](https://github.com/searxng/searxng/blob/c360868e5b7c01e463a362a53518190d5a3b1097/searx/webapp.py#L644-L655) — получено 2026-10-29
4. [SearXNG — закреплённые настройки форматов](https://github.com/searxng/searxng/blob/c360868e5b7c01e463a362a53518190d5a3b1097/searx/settings.yml#L80-L87) — получено 2026-10-29
