fix and update

This commit is contained in:
lendry
2026-06-30 16:03:33 +03:00
parent 69063c8fba
commit 2eeb928a72
6 changed files with 138 additions and 19 deletions

View File

@@ -0,0 +1,52 @@
#!/bin/sh
# После recreate api-gateway Docker выдаёт новый IP; без reload nginx шлёт на старый адрес → 502.
set -eu
GW_HOST="${IDP_API_GATEWAY_HOST:-lendry-id-api-gateway}"
GW_PORT="${IDP_API_GATEWAY_PORT:-3000}"
WATCH_INTERVAL="${IDP_NGINX_WATCH_INTERVAL:-5}"
log() {
echo "[idp-nginx-watch] $*"
}
wait_for_gateway() {
attempt=0
while [ "$attempt" -lt 120 ]; do
if wget -qO- --timeout=3 "http://${GW_HOST}:${GW_PORT}/health" 2>/dev/null | grep -q '"status"'; then
log "api-gateway доступен (${GW_HOST}:${GW_PORT})"
return 0
fi
attempt=$((attempt + 1))
sleep 1
done
log "WARN: api-gateway не ответил за 120с — nginx стартует без ожидания"
return 0
}
watch_gateway() {
last_ip=""
while true; do
sleep "$WATCH_INTERVAL"
current_ip="$(getent hosts "$GW_HOST" 2>/dev/null | awk '{print $1}' | head -n1 || true)"
healthy=0
if wget -qO- --timeout=3 "http://${GW_HOST}:${GW_PORT}/health" 2>/dev/null | grep -q '"status"'; then
healthy=1
fi
if [ "$healthy" -eq 0 ]; then
log "api-gateway недоступен — reload nginx"
nginx -s reload 2>/dev/null || true
continue
fi
if [ -n "$current_ip" ] && [ -n "$last_ip" ] && [ "$current_ip" != "$last_ip" ]; then
log "IP ${GW_HOST} изменился (${last_ip}${current_ip}) — reload nginx"
nginx -s reload 2>/dev/null || true
fi
if [ -n "$current_ip" ]; then
last_ip="$current_ip"
fi
done
}
wait_for_gateway
watch_gateway &