Re: $upstream_addr содержит имя апстрима

Ruslan Ermilov ru at nginx.com
Sat Dec 1 20:18:52 UTC 2012


On Sat, Dec 01, 2012 at 02:01:34AM +0400, umask wrote:
> Доброй ночи,
> 
> имеется лог в таком формате:
> 
>         log_format main '$remote_addr\t'
>                         '$remote_user\t'
>                         '[$time_local]\t'
>                         '$msec\t'
>                         '$http_host\t'
>                         '$request\t'
>                         '$status\t'
>                         '$body_bytes_sent\t'
>                         '$http_referer\t'
>                         '$http_user_agent\t'
>                         '$http_x_forwarded_for\t'
>                         '$request_time\t'
>                         '$upstream_cache_status\t'
>                         '[$upstream_status]\t'
>                         '[$upstream_addr]\t'
>                         '[$upstream_response_time]\t'
>                         '$uid_set\t'
>                         '$uid_got\t'
>                         '$http_cookie\t'
>                         '$connection:$connection_requests\t';
> 
> почти все записи в логе не вызывают никаких вопросов.
> 
> Но есть вот такие (некоторые поля заменены для наглядности и приватности):
> 
> 10.20.30.40     -       [30/Nov/2012:06:14:01 +0400]    1354241641.781  domain.com      GET /blog/1.php HTTP/1.1        502     6100    -       Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)        66.249.76.175   0.000   -       [502]   [web_backend]   [0.000] -       -       -       88314:1
> 
> 11.22.33.44     -       [30/Nov/2012:08:23:09 +0400]    1354249389.371  domain.com      GET /moscow HTTP/1.1    502     6100    -       Opera/9.25 (Windows NT 5.0; U; en)      -       0.000-  [502]   [web_backend]   [0.000] -       -       cookiecookiecookie      565449:2
> 
> 22.33.44.55     -       [30/Nov/2012:08:23:09 +0400]    1354249389.729  domain.com      GET /products/finance/search/ajax_in.php?region=NY HTTP/1.1     502     6100    http://domain.com/products/finance/search/      Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; MAAU; MAAU)     -       0.000   -       [502]   [web_backend]   [0.000] -       -       cookiecookiecookie      565579:2
> 
> Возникает вопрос. От чего в $upstream_addr попадает значение "[web_backend]"?

Это случается тогда, когда на момент обработки очередного запроса
оказывается, что все серверы в апстриме неживые, и соответственно
не делается ни одной попытки соединения.  В error_log при этом
выводится ошибка "no live upstreams while connecting to upstream",
а счётчики "fails" у всех серверов апстрима сбрасываются в 0 для
быстрого восстановления.

> Разумеется, в конфиге присутствует определение астрима с именем web_backend:
>    upstream web_backend {
>         server www01 weight=2;
>         server www02 weight=3;
>    }
> 
> И проксирование в этот апстрим:
>         location ~* /branches/ {
>                 proxy_pass         http://web_backend;
>                 proxy_set_header   Host             $host;
>                 proxy_set_header   X-Real-IP        $remote_addr;
>                 proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
>         }



Подробная информация о списке рассылки nginx-ru