Назад | Перейти на главную страницу

Nginx 1.2.1: как проанализировать внутреннюю ошибку сервера 500

Я отвечаю за сервер nginx, который перенаправляет и разделяет запросы. На нашем производственном движке мы запускаем nginx 1.2.1, а на тестовой машине - 1.4.1. Конфигурация такая же, но в производственной среде я всегда получаю 500 Internal Server Error"но в тестовой среде все работает нормально. Я всегда проверял access.log и error.log Nginx. Но беспокоиться не о чем.

Как мне проанализировать ошибку и провести дальнейшее расследование ее причины?

Первое, что нужно спросить себя: что испускает ответ 500. Заголовки ответов и стиль страницы многое расскажут о том, откуда он взялся. Например. Есть ли в ответе заголовок X-Powered-By? Если это так, то это не было бы, например, Apache.

Страница с ошибкой Tomcat выглядит совсем иначе, чем страница Nginx, по сравнению с Apache и т. Д. Вот почему я обучаю людей на работе, чтобы они делали мне хороший снимок экрана.

Кроме того, если вы видите журналы из 500, но ничего не видите в журнале ошибок, то, скорее всего, оно пришло из серверной части, и вам следует посмотреть там.

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

Остерегайтесь изменений поведения по умолчанию в разных версиях программного обеспечения. Я вспомнил об этом несколько раз, когда недавно переходил на Apache 2.4 с 2.2.

Наконец, вы говорите, что серверная часть одинакова (действительно, как в одном и том же экземпляре?) Для теста и продукта, но это не обязательно означает, что запрос будет обрабатываться одинаково (например, передается другой заголовок хоста или имя сервера SNI. )

Надеюсь, это поможет вам освоить отладку обратного прокси.

Вот контрольный список nginx, который я использую при диагностике ошибок.

  1. проверьте конфигурацию nginx, используя

    sudo nginx -t
    

    это очень простой шаг, но его всегда нужно делать первым.

  2. убедитесь, что nginx запущен

    sudo service nginx status
    
  3. Проверьте файлы журнала, указанные в вашем сайт конфигурация

    find /etc/nginx -name '*.conf' | xargs grep -i log
    
  4. Если вы получаете ошибку 500, вы должны увидеть в своем журнале ошибок запись, относящуюся к ошибке, которая даст вам подсказку о том, почему произошла ошибка. Если вы не видите сообщения об ошибке в журнале ошибок, значит, у вас проблема с конфигурацией журнала ошибок, и вам нужно проверить временные метки в файле журнала ошибок, чтобы убедиться, что он обновляется.

Вы можете проверить внешние подключения из своей конфигурации nginx (Proxy, FCGI ...) и проверить их журналы.

Чтобы зафиксировать любые внешние запросы / ошибки, которые вы можете получить и вызвать ошибку 500: вы также можете запустить свой адрес, к которому вы пытаетесь получить доступ, в браузере Chrome, открыв хром: // нетто-внутренности страница в меню «События».

Там вы можете проанализировать больше внешних запросов / ответов (информация о DNS, отправленные заголовки и т. Д.)