Re: upstream prematurely closed connection (но как-то странно)
Evgeniy Berdnikov
bgx на protva.ru
Вт Дек 11 20:24:55 UTC 2018
On Tue, Dec 11, 2018 at 02:54:29PM -0500, suffix wrote:
> Смотрю error.log nginx:
>
> 2018/12/11 16:38:51 [error] 2893#2893: *45224 upstream prematurely closed
> connection while reading response header from upstream, client:
> 66.249.76.90, server: www.babai.ru, request: "GET
> /articles/prezhde-chem-prinesti-svinyu-domoj.html?amp=yes HTTP/1.1",
> upstream:
> "http://127.0.0.1:8080/articles/prezhde-chem-prinesti-svinyu-domoj.html?amp=yes",
> host: "www.babai.ru"
>
> Однако в это же время в access.log apache:
>
> 66.249.76.90 - - [11/Dec/2018:16:38:51 +0300] 0 "GET
> /articles/prezhde-chem-prinesti-svinyu-domoj.html?amp=yes HTTP/1.1" 200
> 45443 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P)
> AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile
> Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
>
> Код 200
>
> И в это же время в access.log nginx:
>
> 66.249.76.90 - - [11/Dec/2018:16:38:51 +0300] "GET
> /articles/prezhde-chem-prinesti-svinyu-domoj.html?amp=yes HTTP/1.1" 200
> 12664 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P)
> AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile
> Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
>
> Тоже код 200
>
> Откуда тогда ошибка то ?
В лог-формате "combined" после статус-кода (200) идёт body_bytes_sent.
Видно, что апач отдал nginx-у 45443 байта, а ngnix клиенту 12664, так что
обоснованное подозрение на то, что nginx недополучил данные.
В HTTP/1.1 есть механизм контроля целостности данных, и nginx может видеть,
что ему прислали ответ короче, чем должно быть по его заголовку.
Я бы прежде всего подумал, нет ли между апачем и nginx-ом statefull
файрвола, который из-за какой-то ошибки в своей логике иногда обрывает
коннекции, например, содержащие этот "amp".
--
Eugene Berdnikov
Подробная информация о списке рассылки nginx-ru