У меня есть серверное приложение, которое прослушивает сокет UNIX, а Nginx выступает в качестве обратного прокси-сервера.
Теперь я хочу, чтобы Nginx ждал, пока мое приложение не появится в сети, когда, например.Я развертываю обновление и перезапускаю его, не возвращая клиентам никаких ошибок.
Это то, что у меня есть в моей конфигурации Nginx:
место расположения / {
# proxy_pass http://localhost:8080;
proxy_pass http://unix:/tmp/MyApp.sock;
proxy_set_header Хост $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
}
Однако всякий раз, когда мое приложение не работает, Nginx возвращает 502 Неверный шлюз
немедленно. По-видимому, ни один из прокси_*_тайм-аут
помощь в настройках.
То же самое происходит с локальным сокетом TCP. С сокетами UNIX, когда я закрываю приложение, я удостоверяюсь, что файл сокета удален, чтобы Nginx мог видеть, что приложение не запущено.
Как я могу сказать ему, чтобы он фактически ждал определенный период времени, пока сокет не станет доступным?