Разъяснения по работе 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