Управление

Как исправить ошибку “500 Internal Server Error NGINX” для клиента и сервера?

Nginx, веб-сервер с открытым исходным кодом, публично выпущенный в октябре 2004 года, также служит в качестве балансировщика нагрузки, обратного прокси и HTTP-кэша. Его популярность и полезность очевидны в том, что его используют такие известные технологические компании, как Microsoft, Google, Facebook, Twitter и Apple.

Nginx
Nginx

Значение 500 внутренней ошибки сервера в Nginx

Как и другие программные приложения или серверы, Nginx может сталкиваться с ошибками, которые может выявить его встроенный отчет об ошибках. Однако внутренняя ошибка сервера 500 представляет собой уникальную ситуацию. Эта ошибка также появляется на различных веб-серверах, таких как Apache и IIS.

500 внутренняя ошибка сервера Nginx
500 Внутренняя ошибка сервера Nginx

Ошибка 500 — это код состояния HTTP, указывающий на проблему сервера, первопричина которой неясна. В отличие от других кодов состояния HTTP, таких как 403 (Forbidden) или 404 (Not Found), она не дает подсказки о возможной причине.

Как исправить 500 ошибку Nginx на стороне клиента?

Этот код ошибки представляет собой проблему на стороне сервера, которая обычно может быть решена на сервере. Однако в редких случаях ваш браузер может внести свой вклад, создав запрос, который сервер не может обработать.

Чтобы убедиться, что проблемы не связаны с браузером, откройте веб-сайт в другом браузере, на другом устройстве и в другой сети. Если он работает нормально, очистите кэш/данные исходного браузера и убедитесь, что никакие расширения браузера не вызывают проблему.

Если веб-сайт Nginx по-прежнему отображает ошибку 500, обратитесь к администратору обслуживающему сервер, чтобы решить проблему.

Как исправить ошибку Nginx 500 на стороне сервера?

Эта ошибка может возникнуть как из-за простой синтаксической ошибки, так и из-за проблем с внутренним приложением. Поскольку ошибка не раскрывает основную причину, ее устранение может быть сложным. Если же нет, то решить проблему можно с помощью систематического подхода, описанного ниже.

1. Выполните перегрузку сервера

Если ваш сервер перегружен, он может выдать внутреннюю ошибку 500 из-за нехватки ресурсов для выполнения основных задач. Проверьте использование процессора, памяти и доступность дискового пространства с помощью команд Free, Top или HTop. На скриншоте ниже показан результат после выполнения команды top.

Проверьте ресурсы сервера
Проверьте ресурсы сервера

Если сервер перегружен, добавление дополнительных ресурсов должно устранить ошибку 500 на Nginx.

2. Проверьте синтаксис конфигурации

Наиболее распространенной причиной ошибки 500 на Nginx являются неправильные настройки сервера из-за ошибки в синтаксисе конфигурации.

Чтобы исправить это, просмотрите конфигурационные файлы Nginx и внимательно проверьте синтаксис на наличие ошибок или неправильно расставленных директив.

Далее просмотрите конфигурационные файлы Nginx на предмет синтаксических ошибок или неправильно расставленных директив. Используйте такие команды, как nginx -t или nginx -t -c /path/to/nginx.conf для проверки синтаксиса и выявления любых ошибок. Выполните следующие команды в терминале, чтобы обнаружить любые ошибки:

cd /etc/nginx/sites-available

nginx -t
Проверьте синтаксис конфигурации
Проверка синтаксиса конфигурации

Вы также можете воспользоваться следующим способом:

nginx -t -c /path/to/nginx.conf

Если обнаружены синтаксические ошибки, исправьте их и выполните следующие действия для перезапуска/перезагрузки Nginx:

sudo service nginx restart

nginx -s reload

В некоторых случаях вам может потребоваться внести изменения в конфигурационный файл, как показано ниже:

try_files с try_files $uri =404

или

try_files $uri $uri/ /index.html; с try_files $uri/ $uri /index.php?$query_string;

3. Проверьте журналы сервера

Когда Nginx выдает ошибку 500, он также создает запись во внутреннем журнале ошибок, которая может подсказать первопричину ошибки’. Обычно журналы сервера находятся по адресу:

/var/log/nginx/error.log

В дистрибутиве Linux выполните следующие действия, чтобы открыть журнал сервера:

cd /var/log/nginx

cat error.log

На открывшейся странице вы можете проверить, нет ли признаков первопричины. Например, посмотрите на изображение ниже:

Проверка журналов сервера
Проверка журналов сервера

Это указывает на то, что сервер не смог установить SSL/TLS-соединение с клиентом из-за проблемы с SSL-сертификатом. Обнаружив проблему в журналах, вы можете поискать возможные причины и решения в Интернете.

Если вы не можете открыть журнал из-за ошибки ‘permission denied’ для папки, измените Nginx.conf, заменив ‘пользователя www-data’ на ‘пользователя root.’ После сохранения файла перезапустите Nginx и снова откройте файл log.

4. Временно отключите Cloudflare или аналогичные службы

Если вы используете Cloudflare или аналогичный сервис на своем сервере, и он неправильно настроен или конфликтует с недавними изменениями, временное отключение может помочь диагностировать проблему.

  1. Перейдите в Панель управления Cloudflare и войдите в систему, используя свои учетные данные.
  2. Перейти к Обзор и разверните Расширенный.
  3. Нажмите на кнопку Приостановить веб-сайт и подтвердите это. Если у вашего хостинг-провайдера есть интеграция Cloudflare, убедитесь, что она также отключена.
  4. Убедитесь, что у вас есть правильные IP-адреса для веб-сайта, и проверьте, убрана ли ошибка внутреннего сервера Nginx 500. Не забудьте проверить как HTTP, так и HTTPS версии сайта.
    Отключите CloudFlare на сайте
    Отключите CloudFlare на сайте

5. Проверьте сертификаты сервера

Если срок действия какого-либо из ваших сертификатов истек или он стал недействительным, это обязательно вызовет внутреннюю ошибку сервера.

  1. Настройте Nginx на использование IP-адрес вашего сайта, а не доменного имени.
    Используйте IP-адрес сервера в настройках Nginx
    Использовать IP-адрес сервера в настройках Nginx
  2. Отключите Проверка SSL в proxy_pass и добавьте туда самоподписанный сертификат. Вы можете создать его в Cloudflare Dashboard (SSL > Сертификаты клиента).
  3. Проверьте, правильно ли работает сервер. Если это так, обратитесь в центр сертификации или проверьте свою установку на предмет неправильной конфигурации сертификатов.

6. Проверьте наличие ошибок бэкэнд-приложений

Если Nginx перенаправляет клиентские запросы другому сервису, который не может выполнить их должным образом, это приводит к ошибке 500. Например, если сервер направляет клиентские запросы к внутреннему приложению, такому как NodeJS, а приложение работает некорректно, это приводит к обсуждаемой ошибке.

Помните, что если в журнале сервера нет ошибок, то это, как правило, указывает на проблему с бэкендом.

Чтобы решить эту проблему, проверьте журналы бэкэнд-приложений на наличие ошибок или исключений. Например, на WordPress вы’найдете журналы Node JS по адресу:

/var/www/<ваш_сайт>.com/logs/error.журнал

7. Недостаточные разрешения на файлы

Если сервер Nginx не имеет необходимых разрешений для доступа или выполнения файла, это приведет к ошибке 500. Например, внутренняя ошибка сервера возникнет на сайте WordPress, если сервер Nginx не сможет получить доступ или обслужить файлы PHP или HTML из папки public_html.

Чтобы исправить это, вы можете изменить необходимые разрешения Nginx на доступные серверу файлы или каталоги с помощью команды chmod команда, обычно 755 для каталогов и 644 для файлов.

8. Проверка совместимости плагинов

Плагины существенно расширяют возможности сервера. Но неисправные, устаревшие или слишком обновленные плагины могут вызывать внутренние ошибки сервера. Например, обновление WordPress может нарушить функциональность вашего сайта, так как многие плагины становятся несовместимыми, пока не будут обновлены.

Чтобы решить эту проблему, убедитесь, что каждый плагин совместимый с серверным программным обеспечением и другими плагинами. Хотя это может показаться утомительным, это’ стоит того. Также попробуйте отключить все плагины и посмотреть, устранит ли это ошибку.

Если вы недавно обновили программное обеспечение своего сервера, попробуйте восстановление до предыдущей версии (если это возможно) и посмотреть, устранится ли ошибка. Это позволит убедиться, что проблема вызвана обновлением. Вы можете отложить обновление программного обеспечения до тех пор, пока все плагины не подтвердят совместимость.

9. Проверка на наличие неисправного скрипта

Как и плагины, скрипты имеют решающее значение для определенной функциональности сайта. Недействительный или обновленный скрипт, несовместимый с окружением сервера, может вызвать внутреннюю ошибку сервера.

Вы можете решить эту проблему следующим образом отключение скриптов и проверьте сервер Nginx. Если все работает правильно, просмотрите скрипты и попытайтесь найти проблемные.

10. Увеличьте значение таймаута сервера

Если значение таймаута сервера меньше времени отклика Nginx’, вы столкнетесь с внутренней ошибкой сервера. Аналогично, если запрос сервера’ занимает больше времени, чем время ответа Nginx’, возникнет проблема.

Увеличение значения таймаута сервера должно решить проблему. Вы можете найти специальные инструкции в Интернете.

11. Убедитесь, что все перенаправления работают

Убедитесь, что все перенаправления работают правильно, когда Nginx работает в качестве прокси-сервера. Если сервер не может перенаправить клиентский запрос на внутренний сервер, возникает ошибка 500.

Временно отключите все перенаправления чтобы убедиться в правильности работы. В случае успеха повторно активируйте каждый из них по отдельности, чтобы определить неисправный редирект. Обнаружив ошибку, найдите в Интернете возможные причины и решения для этого конкретного сбоя перенаправления.

12. Использование PHP с Nginx

Nginx не поддерживает PHP, поэтому неправильная конфигурация PHP в Nginx может привести к внутренней ошибке сервера.

Чтобы решить эту проблему, проверьте интеграцию PHP с Nginx. Если отображение ошибок PHP отключено, то при возникновении ошибки PHP сервер будет возвращать Nginx ошибку 500. Включение отображения ошибок PHP может упростить поиск и устранение неисправностей.

На CentOS 7 выполните следующие действия:

tail -f /var/log/php-fpm/www-error.журнал

В качестве альтернативы перейдите к

/etc/php.ini

И измените

display_errors = Off

на

display_errors = On

Вы также можете поискать лучший обработчик PHP (например, PHP-FPM) и включить кэш Nginx.

13. Использовать минимальный подход

Если вы все еще не можете избавиться от ошибки 500, вы можете использовать минимальный подход для решения проблемы.

  1. Создайте резервное копирование вашего сайта и замените содержимое сайта простым индексом.html с простым текстом.
  2. Проверьте, работает ли сайт is работает и начните добавлять директивы, функции, сервисы, плагины, скрипты и т. д. по одному.
  3. Обязательно тестируйте сайт после каждого шага и проверяйте, не повторяется ли проблема.
  4. Добавьте контент на сайт и проверьте, не он ли является причиной проблемы.
  5. Как только проблемный элемент будет найден, вы сможете устранить его с помощью поиска в Интернете.

Как избежать повторения ошибки 500 сервера Nginx в будущем

Вы можете предпринять следующие шаги, чтобы избежать повторения ошибки Nginx 500:

  • Регулярно проводите обслуживание сервера.
  • Убедитесь, что код сайта и его содержимое (изображения, видео и т. д.) оптимизированы для вашей установки.
  • Создайте CDN для обслуживания веб-сайта через его кэш.

Если у вас возникнут вопросы, мы готовы ответить в разделе комментариев.

Добавить комментарий