Hello! On Wed, Aug 22, 2018 at 07:51:47AM -0400, Dmitry WD wrote:
> Столкнулись с проблемой - при попытке загрузить файл, не авторизовавшись, > backend отвечает 401, но nginx отдает клиенту 502. > Но если например сделать запрос без отправки файла, но с отправкой формы, > nginx отдает как и надо 401. > > Пока предположение такое: > Для всех запросов на backend работает защитник, который из всех данных > загружает и смотрит только заголовки. > Если заголовки не содержат верный токен доступа то запросу отдаётся 401 и на > этом конец. > В запросе POST через nginx идут данные, килобайты, мегабайты и т.д. > Nginx получает их в буфер и пытается отправить на backend, но сразу после > отправки заголовков получает 401. > А так как не отправил все данные и их backend отказался читать считает что > backe-end недоступен. > > Такое может быть? > И главное как сделать так чтобы nginx отдавал клиенту 401? Вероятнее всего проблема в том, что бэкенд, возвращая 401, не делает lingering close, а просто закрывает соединение. В результе nginx'у вслед за ответом улетает RST, и ответа nginx просто не получает. Лечится это только на стороне бэкенда. Всё, что можно было выжать из работы с такими бэкендами на стороне nginx'а - уже выжато, о чём можно прочитать в тикете тут: https://trac.nginx.org/nginx/ticket/1037. Если вдруг на бэкенде guncorn - там же есть ссылка, по которой можно пойти и настучать по голове авторам. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
