Re: proxy_next_upstream & HTTP 502

2019-05-13 Пенетрантность Ekaterina Kukushkina
Добрый день, 

> On 12 May 2019, at 10:28, rihad  wrote:
> 
> У нас стоит:
> proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
> 
> Иногда в случае если один из апстримов в дауне в access.log появляются
> подобные строчки:
> 
> 
> 10.10.10.10 - S387DE34EI-1557637722 [12/May/2019:05:08:42 +] "GET
> /blah/blah HTTP/1.1" 502 12001 "-" "- example.com" "-"
> 
> nginx логирует запрос только если попробовал все апстримы, или после
> каждого? Здесь больше похоже на второе. Можно ли как-то настроить чтобы
> логировался только результат последнего попробованного апстрима? Он и будет
> результатом запроса.
> 

В большинстве случаев, в access лог логгируется один раз на клиентский
запрос независимо от того, сколько апстримов потрогано.
Несколько записей может быть, если nginx делает подзапросы (ssi, njs, etc)
и log_subrequest установлен в on. Либо при использовании нескольких
уровней проксирований на nginx. Полагаю, что это не ваш случай.

В access log имеет логгировать следующие переменные:
$status - итоговый ответ клиету (есть в дефолных форматах)
$upstream_addr - все потрогранные апстримы
$upstream_status - статусы потроганных апстримов

http://nginx.org/en/docs/http/ngx_http_upstream_module.html#variables

--
Ekaterina Kukushkina
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: proxy_next_upstream & HTTP 502

2019-05-12 Пенетрантность Dmitry Sergeev

Насколько

nginx логирует запрос только если попробовал все апстримы, или после 
каждого? Здесь больше похоже на второе. Можно ли как-то настроить 
чтобы логировался только результат последнего попробованного апстрима? 
Он и будет результатом запроса. 
http://nginx.org/ru/docs/http/ngx_http_upstream_module.html - здесь 
указано, что запрос передается в случае неудачи следующему серверу 
апстрима, и в случае неуспеха, будет возвращен результат последнего. А 
так как в access_log возвращается фактический код ответа клиенту, то на 
один запрос от клиента должна быть одна запись в access_log. Если бы на 
один запрос, было бы несколько записей - то это очень странное поведение.


Я  вроде эксперементировал на этот счет, в случае трех серверов в 
апстриме, в access_log попадает одна запись с фактическим кодом ответа 
клиенту, в error_log попадает три записи, о том что неудалось 
соединиться с каждым серверов из  апрстрима.


--
Kind regards
Dmitry Sergeev
Tel: +7 (951) 129-75-72

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

proxy_next_upstream & HTTP 502

2019-05-12 Пенетрантность rihad
У нас стоит:
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;

Иногда в случае если один из апстримов в дауне в access.log появляются
подобные строчки:


10.10.10.10 - S387DE34EI-1557637722 [12/May/2019:05:08:42 +] "GET
/blah/blah HTTP/1.1" 502 12001 "-" "- example.com" "-"

nginx логирует запрос только если попробовал все апстримы, или после
каждого? Здесь больше похоже на второе. Можно ли как-то настроить чтобы
логировался только результат последнего попробованного апстрима? Он и будет
результатом запроса.

nginx version: nginx/1.14.0

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,284130,284130#msg-284130

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