Обратный прокси-сервер nginx не обнаружил сброшенный балансировщик нагрузки - PullRequest
0 голосов
/ 11 ноября 2019

У нас есть следующий конфиг для нашего обратного прокси:

location ~ ^/stuff/([^/]*)/stuff(.*)$ {
    set $sometoken $1;
    set $some_detokener "foo";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Authorization "Basic $do_token_decoding";
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_redirect https://place/ https://place_with_token/$1/;
    proxy_redirect http://place/ http://place_with_token/$1/;
    resolver 10.0.0.2 valid=10s;
    set $backend https://real_storage$2;
    proxy_pass $backend;
}

Теперь все это работает .... до тех пор, пока real_storage не повернет сервер. Например, скажем, real_storage исходит от foo.com. Это балансировщик нагрузки, который направляет на два сервера: 1.1.1.1 и 1.1.1.2. Теперь 1.1.1.1 удален и заменен 1.1.1.3. Тем не менее, nginx продолжает попытки 1.1.1.1, в результате чего:

epoll_wait () сообщил, что клиент преждевременно закрыл соединение, поэтому восходящее соединение также закрывается при подключении к восходящему, клиенту: ..., серверу: ..., запрос: "GET ... HTTP / 1.1", восходящий поток: "https://1.1.1.1:443/...", host:" ... "

Обратите внимание, что восходящий поток - это старый сервер, отображаемый какпредыдущий журнал:

[отладка] 1888 # 1888: * 570837 подключиться к 1.1.1.1:443, fd: 60 # 570841

Это что-то неправильно настроено на нашемсторона или хост для нашего real_storage?

* Лучшее, что я смог найти, это звучит даже близко к моей проблеме - https://mailman.nginx.org/pipermail/nginx/2013-March/038119.html ...

...