Я отвечаю за сервер 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, который я использую при диагностике ошибок.
проверьте конфигурацию nginx, используя
sudo nginx -t
это очень простой шаг, но его всегда нужно делать первым.
убедитесь, что nginx запущен
sudo service nginx status
Проверьте файлы журнала, указанные в вашем сайт конфигурация
find /etc/nginx -name '*.conf' | xargs grep -i log
Если вы получаете ошибку 500, вы должны увидеть в своем журнале ошибок запись, относящуюся к ошибке, которая даст вам подсказку о том, почему произошла ошибка. Если вы не видите сообщения об ошибке в журнале ошибок, значит, у вас проблема с конфигурацией журнала ошибок, и вам нужно проверить временные метки в файле журнала ошибок, чтобы убедиться, что он обновляется.
Вы можете проверить внешние подключения из своей конфигурации nginx (Proxy, FCGI ...) и проверить их журналы.
Чтобы зафиксировать любые внешние запросы / ошибки, которые вы можете получить и вызвать ошибку 500: вы также можете запустить свой адрес, к которому вы пытаетесь получить доступ, в браузере Chrome, открыв хром: // нетто-внутренности страница в меню «События».
Там вы можете проанализировать больше внешних запросов / ответов (информация о DNS, отправленные заголовки и т. Д.)