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