Разъяснения по работе proxy_next_upstream

Alexander Zhuravlev scif-1986 на yandex.ru
Ср Май 23 08:03:10 UTC 2012


Добрый день всем.

Не совсем уверен, что дело именно в proxy_next_upstream, поэтому 
поправьте если не прав.

Проблема: есть веб-сервис (java playframework), он обрабатывает внешние 
запросы и хочется умудриться рестартовать сам демон, не потеряв 
пользовательские запросы. Разъясню: сам демон рестартует порядка 2 
секунд. За это время на nginx поступает порядка 20-50 запросов. Хочется 
сложить их в некий буфер и дождаться подъёма сервера. Да, понимаю, что 
запросы будут обрабатываться не 0.1сек, а 2.1-2.5сек, но главно чтобы 
они были обработаны, а не получили 502-ую. Насколько я понимаю 
реализовать это можно только установкой самого себя в резервные сервера 
и установкой таймаута за который демон должен рестартовать.

Накропал конфиг:

     upstream local_upstream {
         server 127.0.0.1:9012 fail_timeout=12s max_fails=1;
         server localhost:9012 backup;
     }

     server {
         proxy_connect_timeout 5s;
         listen       80;
         server_name localhost;
         error_log /var/log/nginx/exporter.error.log;
         proxy_next_upstream timeout;

         root  /opt/app/views;

         location / {
             proxy_pass              http://local_upstream;
             proxy_set_header        Host $http_host;
         }

Считал, что согласно proxy_next_upstream сервер будет считаться мёртвым 
только по истечении времени, но что-то нифига не так :(



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