×

Устранение неполадок: ошибка поиска 422

 
При использовании расширенного поиска в HTML-файлах, экспортированных из Dr.Explain, вместо результатов поиска вы можете столкнуться с сообщениями об ошибках с кодом 422.
 
Ошибка 422 означает, что веб-сервер перенаправляет запросы на бэкенд, но путь указан неверно. Обычно это проблема конфигурации веб-сервера.
 

Наиболее вероятные причины

 
  • В конфигурации nginx поисковому движку не передается путь: добавьте /$1$is_args$args в директиву proxy_pass.
  • В конфигурации Apache поисковому движку не передается путь: добавьте /$1 в RewriteRule.
  • Опечатка в шаблоне пути: убедитесь, что указано /drexsearch/, а не /drxsearch/.
 

Шаг 1: Проверьте бэкенд в браузере

 
  • Откройте свою документацию в браузере.
  • Щелкните на любой раздел в меню.
  • В адресной строке браузера измените URL, удалив имя файла в конце и добавив /drexsearch/ping. Например:
    измените http://ваш-сайт.com/docs/some-file.htm
    на http://ваш-сайт.com/docs/drexsearch/ping
  • Нажмите Enter.
 
Что вы должны увидеть: сообщение с текстом "If you see this text, Dr.Explain Search Backend is working..." (если вы видите этот текст, бэкенд Dr.Explain Search работает...)
 
Если вы видите это сообщение: бэкенд работает, но ваш веб-сервер не настроен на правильную переадресацию поисковых запросов. Перейдите к Шагу 3.
 
Если вы видите эту ошибку (или подобную):
 
{"error":"URL \"/drexsearch/ping\" is invalid..."}
 
Это означает, что ваш веб-сервер добавляет лишний префикс (в примере выше — /drexsearch) при переадресации на бэкенд. Перейдите к Шагу 3.
 
Если вы видите другую ошибку: возможно, бэкенд не запущен. Перейдите к Шагу 2, чтобы проверить, запущен ли бэкенд.
 

Шаг 2: Проверьте бэкенд напрямую

 
Если у вас есть доступ к серверу, подключитесь к нему (например, по SSH) и откройте терминал, затем выполните команду:
 
curl http://127.0.0.1:8082/ping
 
Что вы должны увидеть: сообщение с текстом "If you see this text, Dr.Explain Search Backend is working..." (если вы видите этот текст, бэкенд Dr.Explain Search работает...)
 
Если вы видите это сообщение: бэкенд работает, но ваш веб-сервер не настроен на правильную переадресацию поисковых запросов. Перейдите к Шагу 3.
 
Если вы видите ошибку: возможно, бэкенд не запущен. Перейдите к разделу "Устранение неполадок: ошибка поиска 502", чтобы проверить, работает ли служба бэкенда.
 

Шаг 3: Исправьте конфигурацию веб-сервера

 
Этот шаг требует доступа к конфигурационным файлам вашего сервера.
 

Для серверов nginx:

 
Ваша конфигурация должна выглядеть так:
 
location ~ /drexsearch/(.*)$ {
    proxy_pass http://127.0.0.1:8082/$1$is_args$args;
}
 

Наиболее вероятные ошибки:

отсутствие /$1$is_args$args:
 
location ~ /drexsearch/(.*)$ {
    proxy_pass http://127.0.0.1:8082;
}
 

Для серверов Apache:

 
Ваша конфигурация должна выглядеть так:
 
RewriteEngine On
RewriteRule ^(?:.*/)?drexsearch/(.*)$ http://127.0.0.1:8082/$1 [P,L]
 

Наиболее вероятные ошибки:

отсутствие /$1 part:
 
RewriteRule ^(?:.*/)?drexsearch/(.*)$ http://127.0.0.1:8082 [P,L]
 
Если вы нашли ошибку: исправьте конфигурацию и перезапустите веб-сервер. Затем повторите проверку.
 

Шаг 4: Проверьте журналы ошибок

 
Этот шаг требует доступа к файлам логов вашего сервера.
 

Для nginx:

 
sudo tail -f /var/log/nginx/error.log
 

Для Apache:

 
sudo tail -f /var/log/apache2/error.log
 
Ищите: "upstream sent unexpected response code 422".
Справочная система создана в Dr.Explain