×

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

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

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

 
  • Проблемы с правами доступа: веб-сервер не может прочесть файлы или получить доступ к каталогам.
  • Синтаксическая ошибка в конфигурации: опечатка или ошибка форматирования в конфигурационном файле.
  • Бесконечный цикл редиректов или переадресации: правила перезаписи URL создают бесконечный цикл.
  • Проблемы с SSL-сертификатом: веб-сервер не может прочитать или проверить файлы SSL-сертификата.
 

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

 
Этот шаг требует доступа к файлам логов вашего сервера.
 
Для nginx:
 
sudo tail -f /var/log/nginx/error.log
 
Для Apache:
 
sudo tail -f /var/log/apache2/error.log
 
Обратите внимание на следующие сообщения:
 
  • "Permission denied" — веб-сервер не может получить доступ к файлам. Перейдите к Шагу 2.
  • "rewrite loop" — в вашей конфигурации есть бесконечный цикл. Перейдите к Шагу 3.
  • "Invalid command" или "syntax error" — в вашей конфигурации есть ошибка. Перейдите к Шагу 4.
 

Шаг 2: Проверьте права доступа к файлам

 
Этот шаг требует доступа к вашему серверу по SSH.
 
Проверьте права доступа к вашим файлам:
 
ls -la /путь/к/вашим/html/файлам
 
Что вы должны увидеть: пользователь веб-сервера (обычно nginx, www-data или apache) должен иметь права на чтение вида drwxr-xr-x. Буквы r и x среди последних трёх символов в строке прав означают, что файлы доступны для чтения, а веб-сервер может просматривать содержимое папки.
 
Если права доступа указаны неверно: обратитесь к администратору вашего сервера, чтобы он их исправил.
 

Шаг 3: Проверьте наличие циклов перезаписи

 
Этот шаг требует доступа к конфигурационным файлам вашего сервера.
 
Наиболее вероятные ошибки nginx, из-за которых возникает цикл:
 
# НЕПРАВИЛЬНО - создает бесконечный цикл
rewrite ^/page(.*)$ /page$1 last;
 
Правильная конфигурация:
 
# ПРАВИЛЬНО - используйте 'break'
rewrite ^/page(.*)$ /page$1 break;
 
Если вы обнаружили цикл: исправьте rewrite-правило и перезапустите веб-сервер.
 

Шаг 4: Проверьте синтаксис конфигурации

 
Этот шаг требует доступа к вашему серверу через SSH.
 
Для nginx:
 
sudo nginx -t
 
Вы должны увидеть:
 
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
 
Для Apache:
 
sudo apache2ctl configtest
 
Вы должны увидеть:
 
Syntax OK
 
Если вы видите ошибки: исправьте синтаксические ошибки, указанные в сообщении.
 

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

 
Если конфигурация веб-сервера корректна, ошибка может исходить от службы бэкенда. Выполните следующие действия, чтобы проверить, работает ли бэкенд правильно.
 
  • Откройте свою документацию в браузере.
  • Щелкните на любой раздел в меню.
  • В адресной строке браузера измените 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 работает...)
 
Если вы видите это сообщение: бэкенд работает, ошибка 500, скорее всего, вызвана конфигурацией вашего веб-сервера. Внимательно просмотрите предыдущие шаги.
 
Если вы видите эту ошибку (или похожую):
 
{"error":"URL \"/drexsearch/ping\" is invalid..."}
 
Это означает, что ваш веб-сервер добавляет лишний префикс (в примере выше — /drexsearch) при переадресации на бэкенд. Проверьте конфигурацию вашего веб-сервера.
 
Если вы видите другую ошибку: возможно, бэкенд не запущен. Перейдите к следующему шагу, чтобы проверить, работает ли служба бэкенда.
 

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

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

Шаг 7: Проверьте логи бэкенда

 
Этот шаг требует доступа к вашему серверу через SSH и Docker.
 
Проверьте, нет ли проблем с бэкендом:
 
docker compose logs drexplain-search-backend-controller
 
Обратите внимание на: ошибки, исключения или другие проблемы, которые могут объяснить ошибку 500.
 
Если вы видите ошибки: устраните конкретные ошибки, указанные в логах. Распространённые проблемы включают проблемы с памятью, ошибки подключения или ошибки конфигурации.
Справочная система создана в Dr.Explain