This commit is contained in:
user 2025-07-26 08:13:42 +03:00
parent 5d49eee98a
commit 6ff645c2e6
1 changed files with 46 additions and 47 deletions

View File

@ -1130,7 +1130,28 @@ setup_nginx() {
log_success "Web2-client развернут в /var/www/my-network-web"
fi
# Создание конфигурации nginx
# Полная очистка старых nginx конфигураций
log_info "Очистка старых nginx конфигураций..."
# Удаляем все существующие конфигурации sites
rm -f /etc/nginx/sites-enabled/* 2>/dev/null || true
rm -f /etc/nginx/sites-available/my-network* 2>/dev/null || true
# Очистка конфигураций certbot в nginx.conf
if [ -f /etc/nginx/nginx.conf.backup ]; then
cp /etc/nginx/nginx.conf.backup /etc/nginx/nginx.conf
else
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
fi
# Удаляем все SSL включения из основного nginx.conf
sed -i '/# managed by Certbot/d' /etc/nginx/nginx.conf 2>/dev/null || true
sed -i '/ssl_certificate/d' /etc/nginx/nginx.conf 2>/dev/null || true
sed -i '/ssl_certificate_key/d' /etc/nginx/nginx.conf 2>/dev/null || true
sed -i '/ssl_dhparam/d' /etc/nginx/nginx.conf 2>/dev/null || true
# Создание чистой HTTP конфигурации nginx
log_info "Создание чистой HTTP конфигурации nginx..."
cat > /etc/nginx/sites-available/my-network << EOF
# MY Network v3.0 nginx configuration
@ -1200,29 +1221,35 @@ $([ "$ENABLE_WEB_CLIENT" = "true" ] && echo " try_files \$uri \$uri/ =404
}
EOF
# Активация сайта
# Активация HTTP конфигурации
if [ ! -L "/etc/nginx/sites-enabled/my-network" ]; then
ln -s /etc/nginx/sites-available/my-network /etc/nginx/sites-enabled/
fi
# Отключение дефолтного сайта
if [ -L "/etc/nginx/sites-enabled/default" ]; then
rm /etc/nginx/sites-enabled/default
fi
# Тест конфигурации nginx
log_info "Тестирование HTTP конфигурации nginx..."
if nginx -t; then
log_success "Конфигурация nginx корректна"
log_success "HTTP конфигурация nginx корректна"
else
log_error "Ошибка в конфигурации nginx"
log_error "Ошибка в HTTP конфигурации nginx"
log_info "Показать детали ошибки nginx:"
nginx -t 2>&1 || true
return 1
fi
# Запуск nginx
# Запуск nginx с HTTP конфигурацией
systemctl enable nginx
systemctl restart nginx
log_success "Nginx настроен и запущен"
# Проверяем, что nginx запустился успешно
sleep 3
if systemctl is-active nginx >/dev/null 2>&1; then
log_success "Nginx запущен с HTTP конфигурацией"
else
log_error "Nginx не запустился"
systemctl status nginx || true
return 1
fi
# Настройка SSL если нужно
if [ "$ENABLE_SSL" = "true" ] && [ -n "$DOMAIN" ] && [ -n "$EMAIL" ]; then
@ -1270,45 +1297,17 @@ install_ssl_certificates() {
if [ -d "/etc/letsencrypt/live/$DOMAIN" ]; then
log_warn "Обнаружен существующий сертификат для $DOMAIN, удаляем для предотвращения конфликтов..."
certbot delete --cert-name "$DOMAIN" --non-interactive 2>/dev/null || true
# Перезапуск nginx после удаления сертификатов чтобы очистить SSL конфигурацию
log_info "Перезапуск nginx для обновления конфигурации..."
systemctl restart nginx
sleep 5
# Проверяем что nginx работает корректно без SSL
if ! nginx -t 2>/dev/null; then
log_warn "Nginx конфигурация некорректна, восстанавливаем базовую HTTP конфигурацию..."
# Пересоздаем чистую HTTP конфигурацию
cat > /etc/nginx/sites-available/my-network << EOF
server {
listen 80;
server_name $DOMAIN;
client_max_body_size 10G;
client_body_timeout 300s;
client_header_timeout 300s;
location / {
$([ "$ENABLE_WEB_CLIENT" = "true" ] && echo " root /var/www/my-network-web;" || echo " return 404;")
$([ "$ENABLE_WEB_CLIENT" = "true" ] && echo " index index.html;" || echo "")
$([ "$ENABLE_WEB_CLIENT" = "true" ] && echo " try_files \$uri \$uri/ =404;" || echo "")
}
location /api/ {
proxy_pass http://127.0.0.1:15100;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
}
}
EOF
systemctl restart nginx
fi
sleep 2
fi
# Убеждаемся что nginx работает с HTTP перед установкой SSL
log_info "Проверка готовности nginx для SSL..."
if ! systemctl is-active nginx >/dev/null 2>&1 || ! nginx -t 2>/dev/null; then
log_error "Nginx не готов для SSL установки"
log_info "Система продолжит работу без SSL"
return 0
fi
# Получение сертификата через certbot с явным указанием типа ключа
log_info "Запуск certbot для получения SSL сертификата..."
if certbot --nginx -d "$DOMAIN" --email "$EMAIL" --agree-tos --non-interactive --redirect --key-type rsa --cert-name "$DOMAIN"; then