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