fix and update

This commit is contained in:
lendry
2026-06-29 18:38:53 +03:00
parent 5a220917dc
commit 3a1bfb0903

View File

@@ -10,7 +10,7 @@
set -euo pipefail set -euo pipefail
SCRIPT_VERSION="2.3.3" SCRIPT_VERSION="2.3.4"
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$ROOT_DIR" cd "$ROOT_DIR"
@@ -362,6 +362,17 @@ stop_docker_nginx() {
fi fi
} }
reload_docker_nginx() {
docker_nginx_container_running || return 0
log "Перезагрузка конфигурации Docker Nginx..."
if docker_cmd compose --env-file .env --profile proxy exec -T nginx nginx -s reload 2>/dev/null; then
ok "Docker Nginx: конфигурация перезагружена"
else
warn "nginx -s reload не удался — перезапуск контейнера lendry-id-nginx"
docker_cmd compose --env-file .env --profile proxy restart nginx 2>/dev/null || true
fi
}
prepare_compose_stack() { prepare_compose_stack() {
resolve_nginx_mode_and_ports resolve_nginx_mode_and_ports
write_compose_override write_compose_override
@@ -1996,22 +2007,33 @@ EOF
# Блок location / для отдельного домена API (api.example.com). # Блок location / для отдельного домена API (api.example.com).
# CORS полностью на api-gateway (enableCors) — nginx только проксирует, # CORS полностью на api-gateway (enableCors) — nginx только проксирует,
# иначе add_header/if в nginx ломают ответы на авторизованные cross-origin запросы (502). # иначе add_header/if в nginx ломают ответы на авторизованные cross-origin запросы (502).
# docker: НЕ используем upstream{} — nginx резолвит api-gateway один раз при старте
# и после пересборки контейнера (новый IP) все запросы дают 502 Connection refused.
build_nginx_api_upstream_block() { build_nginx_api_upstream_block() {
local upstream
if [[ "$NGINX_MODE" == "docker" ]]; then if [[ "$NGINX_MODE" == "docker" ]]; then
upstream="api-gateway:3000" return 0
else
upstream="127.0.0.1:3000"
fi fi
cat <<EOF cat <<EOF
upstream ${NGINX_PREFIX}_api { upstream ${NGINX_PREFIX}_api {
server ${upstream}; server 127.0.0.1:3000;
keepalive 64; keepalive 64;
} }
EOF EOF
} }
build_nginx_api_location_block() { build_nginx_api_location_block() {
if [[ "$NGINX_MODE" == "docker" ]]; then
local proxy
proxy="$(render_proxy_root api)"
cat <<EOF
location / {
${proxy}
proxy_http_version 1.1;
${nginx_proxy_headers}
}
EOF
return 0
fi
cat <<EOF cat <<EOF
location / { location / {
proxy_pass http://${NGINX_PREFIX}_api; proxy_pass http://${NGINX_PREFIX}_api;
@@ -2400,6 +2422,7 @@ write_all_nginx_configs() {
fi fi
else else
ok "Конфиги Nginx: ${LOCAL_CONF_DIR}" ok "Конфиги Nginx: ${LOCAL_CONF_DIR}"
reload_docker_nginx
fi fi
} }
@@ -2770,6 +2793,12 @@ diagnose_common_issues() {
elif [[ "$(env_get NGINX_MODE docker)" == "docker" ]] && compose_uses_proxy_profile; then elif [[ "$(env_get NGINX_MODE docker)" == "docker" ]] && compose_uses_proxy_profile; then
echo -e " ${YELLOW}!${NC} Docker Nginx не запущен (ожидался в режиме docker)" echo -e " ${YELLOW}!${NC} Docker Nginx не запущен (ожидался в режиме docker)"
issues=$((issues + 1)) issues=$((issues + 1))
elif [[ "$(env_get NGINX_MODE docker)" == "docker" ]] \
&& [[ -f "${LOCAL_CONF_DIR}/${NGINX_PREFIX}-api.conf" ]] \
&& grep -q "upstream ${NGINX_PREFIX}_api" "${LOCAL_CONF_DIR}/${NGINX_PREFIX}-api.conf" 2>/dev/null; then
echo -e " ${RED}${NC} Конфиг API-домена использует статический upstream — после пересборки api-gateway будет 502"
echo " Решение: ./install.sh --fix-all (перегенерирует конфиг с динамическим DNS)"
issues=$((issues + 1))
elif [[ "$(env_get NGINX_MODE docker)" == "host" ]]; then elif [[ "$(env_get NGINX_MODE docker)" == "host" ]]; then
if system_nginx_is_active; then if system_nginx_is_active; then
echo -e " ${GREEN}${NC} Системный Nginx: активен" echo -e " ${GREEN}${NC} Системный Nginx: активен"
@@ -3110,7 +3139,7 @@ action_fix_all_errors() {
wait_for_api_grpc_ready 90 || compose_build_and_up api-gateway wait_for_api_grpc_ready 90 || compose_build_and_up api-gateway
log "Шаг 4/6: пересоздание edge-сервисов (frontend, docs, media-ws)..." log "Шаг 4/6: пересоздание edge-сервисов (frontend, docs, media-ws)..."
compose_build_and_up "${HOST_EDGE_SERVICES[@]}" compose_build_and_up frontend docs media-ws
wait_for_service "frontend" 60 wait_for_service "frontend" 60
wait_for_service "docs" 60 wait_for_service "docs" 60
@@ -3134,6 +3163,8 @@ action_fix_all_errors() {
apply_intranet_selfsigned_runtime apply_intranet_selfsigned_runtime
compose_build_and_up nginx ldap-auth compose_build_and_up nginx ldap-auth
wait_for_service "nginx" 45 wait_for_service "nginx" 45
reload_docker_nginx
wait_for_api_grpc_ready 30 || true
if ! docker_nginx_container_running; then if ! docker_nginx_container_running; then
fail "Контейнер lendry-id-nginx не запущен. Проверьте: docker compose --profile proxy logs nginx" fail "Контейнер lendry-id-nginx не запущен. Проверьте: docker compose --profile proxy logs nginx"
fi fi