Re: ошибка "upstream prematurely closed connection" - обсудим ?

2019-10-15 Thread Илья Шипицин
пн, 14 окт. 2019 г. в 18:09, Maxim Dounin :

> Hello!
>
> On Sun, Oct 13, 2019 at 02:18:30PM +0500, Илья Шипицин wrote:
>
> > привет,
> >
> > предыстория. видим ошибку в логах. вспоминаем концепцию, что с уровнем
> > error логируются ошибки на стороне сервера. считаем, что ошибка
> > действительно была. идем к клиенту - у клиента статус 200, ему хорошо,
> все,
> > что он хотел считать, он вычитал. повторяем несколько раз, в большинстве
> > случаев ситуация повторяется, в логах ошибка, у клиента все хорошо.
> >
> > ок. идем смотреть исходники
> >
> > вывод сообщения об ошибке встречается три раза
> >
> > ./nginx-1.17.4/src/http/ngx_http_upstream.c:
> >  "upstream prematurely closed connection");
> > ./nginx-1.17.4/src/http/ngx_http_upstream.c:
> >"upstream prematurely closed connection");
> > ./nginx-1.17.4/src/http/ngx_http_upstream.c:
> >  "upstream prematurely closed connection");
> >
> > в двух случаях запрос завершается статусом 502
> >
> > ngx_http_upstream_finalize_request(r, u, NGX_HTTP_BAD_GATEWAY);
> >
> >
> > в одном месте - не завершается:
> > http://hg.nginx.org/nginx/file/tip/src/http/ngx_http_upstream.c#l2369
>
> Да, если ошибка происходит при чтении заголовка ответа - nginx
> пробует перейти к следующему бэкенду, так как это ещё возможно.
> Что, однако же, не означает, что ошибки нет - она есть.
>

по наблюдаемой картинке - да, похоже, в этом дело и было.
получаем 0 из recv во время чтения заголовков, запрос переотправляется, в
целом он получается успешный


>
> > собственно, recv в некоторых случаях может выдавать 0 и это не всегда
> > ошибка (у нас CentOS 7, возможно, там какая-то своя магия еще, с
> > какими-нибудь сетевыми штуками бекпортированными в ядро 3.10)
> >
> > man recv
> > ...
> > "The value 0 may also be returned if the requested number of bytes to
> > receive from a stream socket was 0."
> >
> > собственно, в этом месте меняем текст. и, чудо, после этого
> залогированные
> > "upstream prematurely closed connection" идеально кореллируют с реальными
> > обрывами.
> >
> > вопрос - в этом месте действительно стоит логировать ошибку с таким
> текстом
> > ? может поменять уровень на info (или debug), а текст сделать что-то типа
> > "zero bytes read from recv" ?
>
> Если recv() возвращает 0 байт - в предположении, что буфер был не
> нулевого размера - то это означает, что соединение закрыто "той
> стороной".  Если это происходит в момент времени, не
> предусмотренный протоколом - то это ошибка, и она логгируется
> соответственно.
>
> --
> Maxim Dounin
> http://mdounin.ru/
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: RSA + EC - ocsp stapling ?

2019-10-15 Thread Илья Шипицин
аналогичный вопрос по директиве *ssl_stapling_responder*

*в случае, если несколько сертификатов*

вт, 15 окт. 2019 г. в 10:49, Илья Шипицин :

> Добрый день!
>
> допустим, у нас сайт на двух сертификатах. включаем директиву
>
> ssl_stapling on;
>
> для обоих сертификатов должно включиться ?
>
>
> а что надо указывать в директиве
>
> *ssl_stapling_file* *файл*;
>
> ответ для обоих сертификатов ?
>
> Илья Шипицин
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: RSA + EC - ocsp stapling ?

2019-10-15 Thread Maxim Dounin
Hello!

On Tue, Oct 15, 2019 at 10:49:17AM +0500, Илья Шипицин wrote:

> допустим, у нас сайт на двух сертификатах. включаем директиву
> 
> ssl_stapling on;
> 
> для обоих сертификатов должно включиться ?

Да.

> а что надо указывать в директиве
> 
> *ssl_stapling_file* *файл*;
> 
> ответ для обоих сертификатов ?

Ничего.  Если что-либо указать - то всё содержимое файла будет 
возвращаться всем клиентам в рамках OCSP stapling'а, вне 
зависимости от используемого сертификата, и работать это не будет.

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: RSA + EC - ocsp stapling ?

2019-10-15 Thread Илья Шипицин
вт, 15 окт. 2019 г. в 18:52, Maxim Dounin :

> Hello!
>
> On Tue, Oct 15, 2019 at 10:49:17AM +0500, Илья Шипицин wrote:
>
> > допустим, у нас сайт на двух сертификатах. включаем директиву
> >
> > ssl_stapling on;
> >
> > для обоих сертификатов должно включиться ?
>
> Да.
>
> > а что надо указывать в директиве
> >
> > *ssl_stapling_file* *файл*;
> >
> > ответ для обоих сертификатов ?
>
> Ничего.  Если что-либо указать - то всё содержимое файла будет
> возвращаться всем клиентам в рамках OCSP stapling'а, вне
> зависимости от используемого сертификата, и работать это не будет.
>

с дилетанской точки зрения выглядит разумным сценарий - первый раз взять
OCSP ответ, сохранить его в файл, дальше отдавать из файла.
такого не ренализовано?


>
> --
> Maxim Dounin
> http://mdounin.ru/
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: RSA + EC - ocsp stapling ?

2019-10-15 Thread Maxim Dounin
Hello!

On Tue, Oct 15, 2019 at 07:01:56PM +0500, Илья Шипицин wrote:

> вт, 15 окт. 2019 г. в 18:52, Maxim Dounin :
> 
> > Hello!
> >
> > On Tue, Oct 15, 2019 at 10:49:17AM +0500, Илья Шипицин wrote:
> >
> > > допустим, у нас сайт на двух сертификатах. включаем директиву
> > >
> > > ssl_stapling on;
> > >
> > > для обоих сертификатов должно включиться ?
> >
> > Да.
> >
> > > а что надо указывать в директиве
> > >
> > > *ssl_stapling_file* *файл*;
> > >
> > > ответ для обоих сертификатов ?
> >
> > Ничего.  Если что-либо указать - то всё содержимое файла будет
> > возвращаться всем клиентам в рамках OCSP stapling'а, вне
> > зависимости от используемого сертификата, и работать это не будет.
> >
> 
> с дилетанской точки зрения выглядит разумным сценарий - первый раз взять
> OCSP ответ, сохранить его в файл, дальше отдавать из файла.
> такого не ренализовано?

Нет.  Поведение директивы ssl_stapling_file явно описано в 
документации (http://nginx.org/r/ssl_stapling_file).

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru