Re: Nginx отдает клиенту 502, но получает от backend 401
Maxim Dounin
mdounin на mdounin.ru
Вт Авг 28 15:23:09 UTC 2018
Hello!
On Tue, Aug 28, 2018 at 10:49:42AM -0400, Dmitry WD wrote:
> Максим, спасибо за ответ.
> А можете дать ссылку на то место в RFC где сказано что тело запроса надо
> дочитывать полностью до конца и нельзя прерываться и начинать отвечать?
Такого - нигде не написано, потому что это не соответствует
действительности. А вот ответить и закрыть соединения, не читая
тело - нельзя. Подробно про это рассказано в RFC 7230,
https://tools.ietf.org/html/rfc7230#section-6.6:
If a server performs an immediate close of a TCP connection, there is
a significant risk that the client will not be able to read the last
HTTP response. If the server receives additional data from the
client on a fully closed connection, such as another request that was
sent by the client before receiving the server's response, the
server's TCP stack will send a reset packet to the client;
unfortunately, the reset packet might erase the client's
unacknowledged input buffers before they can be read and interpreted
by the client's HTTP parser.
To avoid the TCP reset problem, servers typically close a connection
in stages. First, the server performs a half-close by closing only
the write side of the read/write connection. The server then
continues to read from the connection until it receives a
corresponding close by the client, or until the server is reasonably
certain that its own TCP stack has received the client's
acknowledgement of the packet(s) containing the server's last
response. Finally, the server fully closes the connection.
It is unknown whether the reset problem is exclusive to TCP or might
also be found in other transport connection protocols.
Ту же цитату и ссылку на RFC вы можете найти в тикете, ссылку на
который я давал в исходном ответе.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru