Razbezhkin
@Razbezhkin
программист, преподаватель

Как работает таймаут соединения при проксировании в nginx (proxy_connect_timeout)?

Здравствуйте.
Вопрос теоретический, хотелось бы иметь объяснение следующего поведения nginx.
Ситуация: есть nginx в докере, локальный файл nginx.conf смонтирован в /etc/nginx/nginx.conf
nginx настроен на реверсивный прокси, т.е. получает запросы на 80 порт, перенаправляет на 5555.
часть конфигурации выглядит так:

http {
	server {	
		listen 80;
		location / {
			proxy_pass http://192.168.1.227:5555/;
			proxy_connect_timeout 60s;
		}
	}
}


На порту 5555 ничего не работает, его никто не слушает.
когда я пытаюсь подключиться к порту 80, то через 2 секунды получаю ошибку "502 Bad Gateway"

Вопрос: почему несмотря на параметр proxy_connect_timeout 60s; nginx не выдерживает таймаут в 60 секунд, а сразу через 2 секунды сообщает, что не может подключиться.

Вопрос №2: мне нужно, чтобы nginx, когда он не может подключиться, повторял попытки подключения в течение некоторого заданного времени. такое поведение связано с тем, что иногда backend сервер перезапускается и в течение нескольких секунд не обслуживает соединения, не хочется, чтобы пользователи получали ошибку.

Спасибо за внимание.
  • Вопрос задан
  • 1227 просмотров
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
proxy_connect_timeout работает если с той стороны кто-то слушает, но долго отвечает.
Никаких настроек на случай когда вообще никто не слушает нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы