Re: Error 500 при отдаче статики
Maxim Dounin
mdounin на mdounin.ru
Ср Дек 30 16:45:00 UTC 2015
Hello!
On Wed, Dec 30, 2015 at 10:16:37AM -0500, stalker2011 wrote:
> Добрый день.
> Суть проблемы: Nginx работает как кэширующий балансировщик. Примерно 40-50
> раз в день nginx отдает вместо статического файла из кэша 500-ю ошибку.
> Проблема возникает на маленьких картинках и js (пример запросов с 500)
> Пояснение: Для примера рассмотрим js файл, который кэшируется на 2 часа.
> 1. Время ошибки не совпадает по времени обновления файла из кэша
> 2. Во время ошибки запрос не доходит до бэкендов ( хотя и не должен - раз он
> в кеше)
> 3. referer всегда разный
> 4 . UA тоже встречается разный
> В еррор логе - никаких ошибок не возникает.
>
> Как можно диагностировать причину появления этих ошибок и собственно
> избавится от них?
Если 500-ю ошибку возвращает nginx - то в error log'е должна быть
причина (если её нет - то это, в свою очередь, ошибка).
Но при этом надо понимать, что причина может быть не в том error
log'е (e.g., в глобальном вместо того, что настроен для
конкретного блока server{}) или не на том уровне логгирования
(обычно 500-е ошибки логгируются на уровне error или выше, но
могут быть нюансы).
Если понимания не наступает - имеет смысл для начала убедиться,
что в access log'ах запрос есть, и посмотреть в сторону расширения
логгирования, чтобы убедиться, что в $upstream_status нет той же
ошибки, и $server_name и $uri запроса соответствуют ожиданиям.
Если и это не поможет - то debug log обычно проясняет ситуацию, но
там много и соответственно не очень удобно использовать под
нагрузкой. Подробнее тут:
http://nginx.org/ru/docs/debugging_log.html
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru