У нас есть следующий конфиг для нашего обратного прокси:
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 ...