diff --git a/install.sh b/install.sh index 2066ba2..9cbf5ad 100644 --- a/install.sh +++ b/install.sh @@ -2134,12 +2134,13 @@ nginx_proxy_headers_api=" proxy_set_header Host \$host; proxy_read_timeout 300s; proxy_connect_timeout 75s;" -# proxy_pass к КОРНЮ апстрима ($request_uri сохраняет путь и query). -# docker/host: статический proxy_pass; после recreate api-gateway — nginx -s reload (sync_nginx_after_api_gateway_restart). +# proxy_pass к корню апстрима БЕЗ $request_uri — иначе nginx считает директиву +# «variable proxy_pass» и требует resolver (502: no resolver defined to resolve lendry-id-frontend). +# Без URI в proxy_pass полный путь клиента передаётся upstream как есть. render_proxy_root() { local key="$1" up up="$(nginx_upstream "$key")" - printf ' proxy_pass %s$request_uri;' "$up" + printf ' proxy_pass %s;' "$up" } # proxy_pass с заменой пути на фиксированный ($2, например /ws или /oauth/). @@ -2653,6 +2654,9 @@ validate_docker_api_nginx_config() { if ! grep -q 'lendry-id-api-gateway:3000' "$conf" 2>/dev/null; then fail "Конфиг ${conf} без proxy_pass на lendry-id-api-gateway:3000 — выполните ./install.sh --fix-all" fi + if grep -q 'proxy_pass.*\$request_uri' "$conf" 2>/dev/null; then + fail "Конфиг ${conf} содержит proxy_pass \$request_uri — нужен ./install.sh --fix-all (502 на / без resolver)" + fi ok "Конфиг API-домена: proxy_pass → lendry-id-api-gateway:3000" } @@ -2668,6 +2672,9 @@ validate_docker_frontend_nginx_config() { if ! grep -q 'lendry-id-api-gateway:3000' "$conf" 2>/dev/null; then fail "Конфиг ${conf} без proxy_pass на lendry-id-api-gateway:3000 — выполните ./install.sh --fix-all" fi + if grep -q 'proxy_pass http://lendry-id-frontend:3000\$request_uri' "$conf" 2>/dev/null; then + fail "Конфиг ${conf}: proxy_pass с \$request_uri на frontend — 502 «no resolver defined». Выполните ./install.sh --fix-all" + fi if ! grep -q 'location \^~ /idp-api/ws' "$conf" 2>/dev/null; then warn "Конфиг ${conf}: location ^~ /idp-api/ws отсутствует — WebSocket может идти на api-gateway вместо media-ws" fi