Re: Проблема с обработкой 502 кода в upstream/ip hash
SK
skobolo на gmail.com
Пн Мар 20 16:15:13 UTC 2017
На втором запросе — POST.
См non_idempotent директиву, чтобы отправлять post-запросы кросс-апстрим
SK
> 20 марта 2017 г., в 18:53, BieZax <nginx-forum на forum.nginx.org> написал(а):
>
> Не совсем понятно. Т.е. это нормально, что при одной и той же
> ситуации с разницей в 2 секунды я получаю разное поведение?
> Yuriy Medvedev Wrote:
> -------------------------------------------------------
>> Nginx, это пассивные проверки.
>>
>> 20 марта 2017 г., 18:40 пользователь BieZax
>> <nginx-forum на forum.nginx.org>
>> написал:
>>
>>> Добрый день.
>>> Имеется следующий конфиг:
>>>
>>> location = /abc/auth {
>>> internal;
>>> proxy_set_header X-CAuth-Realm "Registration";
>>> proxy_set_header X-CAuth-Base "access";
>>> proxy_set_header X-CAuth-Table "users";
>>> proxy_set_header X-CAuth-GField "_S_abc";
>>> proxy_set_header X-CAuth-PassF "password";
>>> client_max_body_size 0;
>>> proxy_pass_request_body off;
>>> proxy_set_header X-Real-IP $remote_addr;
>>> proxy_set_header Host $host;
>>> proxy_set_header Content-Length "";
>>> proxy_set_header X-Original-URI $request_uri;
>>> proxy_pass http://127.0.0.1:8079; # тут висит
>> perl
>>> демон и
>>> авторизует
>>> }
>>>
>>> location /abc/ {
>>> auth_request /abc/auth;
>>> proxy_set_header Host abc-i1.balhblah.ru;
>>> proxy_pass http://abc;
>>> proxy_redirect http://abc-i1.blahblah.ru/ /;
>>> proxy_redirect http://abc-i2.blahblah.ru/ /;
>>> proxy_next_upstream error timeout invalid_header
>> http_500
>>> http_503 http_502 http_504;
>>> }
>>>
>>> ...
>>> upstream abc {
>>> ip_hash;
>>> server abc-i1.blahblah.ru;
>>> server abc-i2.blahblah.ru;
>>> }
>>>
>>> Все работает нормально, пока один из бэкендов не
>> начинает
>>> отдавать 502
>>>
>>> Вот пример лога:
>>>
>>> logformat '$remote_addr - $remote_user [$time_local] "$request" '
>> '$status
>>> $bytes_sent "$http_referer" ' '"$http_user_agent" "$cookie_CID"
>>> "$request_time" "$upstream_response_time" "$upstream_addr"
>>> "$upstream_status" "$upstream_http_server"'
>>>
>>> 2 строчки из лога, идущие подряд:
>>> 10.105.5.152 - vasya [20/Mar/2017:17:03:15 +0300] "GET
>>> /abc/Account/Login?ReturnUrl=%2Fabc%2F HTTP/1.0" 200 3295 "-"
>> "Mozilla/5.0
>>> (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko)
>> Chrome/56.0.2924.87
>>> Safari/537.36" "wmmDEljC0bF6XGXtCV9/Ag==" "10.105.5.152" "0.136"
>> "0.003,
>>> 0.113" "10.10.11.72:80, 10.10.11.71:80" "502, 200"
>> "Microsoft-IIS/8.5"
>>> 10.105.5.152 - vasya [20/Mar/2017:17:03:16 +0300] "POST
>>> /abc/ru-RU/Account/Login?ReturnUrl=%2Fabc%2F HTTP/1.0" 502 713
>>> "https://blahblah.ru/abc/Account/Login?ReturnUrl=%2Fabc%2F"
>> "Mozilla/5.0
>>> (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko)
>> Chrome/56.0.2924.87
>>> Safari/537.36" "wmmDEljC0bF6XGXtCV9/Ag==" "0.024" "0.004"
>> "10.10.11.72:80"
>>> "502" "Microsoft-IIS/8.5"
>>> В error логе при этом пусто.
>>>
>>> Разве при такой конфигурации фронтенд не должен всегда
>> спрашивать
>>> второй сервер, если один из них не отвечает? Почему при одной
>> и тоже
>>> конфигурации получается 2 разных реакции?
>>>
>>> Posted at Nginx Forum: https://forum.nginx.org/read.
>>> php?21,273046,273046#msg-273046
>>>
>>> _______________________________________________
>>> 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
>
> Posted at Nginx Forum: https://forum.nginx.org/read.php?21,273047,273048#msg-273048
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
Подробная информация о списке рассылки nginx-ru