# Устранение 502 ошибки MY Uploader Bot ## 🚨 Если получаете 502 Bad Gateway Ошибка 502 означает, что nginx работает, но не может подключиться к backend приложению. ## 🔍 Быстрая диагностика ### 1. Запустите диагностический скрипт: ```bash sudo /home/myuploader/uploader-bot/diagnose.sh my-public-node-3.projscale.dev ``` ### 2. Проверьте статус контейнеров: ```bash cd /home/myuploader/uploader-bot sudo docker-compose -f docker-compose.production.yml ps ``` ### 3. Проверьте логи приложения: ```bash sudo docker-compose -f docker-compose.production.yml logs -f app ``` ## 🛠️ Частые решения ### Решение 1: Приложение еще запускается ```bash # Подождите 2-3 минуты и проверьте снова sleep 180 curl -v https://your-domain.com/health ``` ### Решение 2: Перезапуск сервисов ```bash cd /home/myuploader/uploader-bot sudo docker-compose -f docker-compose.production.yml restart app ``` ### Решение 3: Полная перезагрузка ```bash cd /home/myuploader/uploader-bot sudo docker-compose -f docker-compose.production.yml down sudo docker-compose -f docker-compose.production.yml up -d ``` ### Решение 4: Проверка базы данных ```bash # Проверка PostgreSQL sudo docker-compose -f docker-compose.production.yml exec postgres pg_isready -U my_user -d my_uploader_db # Перезапуск базы данных если нужно sudo docker-compose -f docker-compose.production.yml restart postgres redis ``` ## 🔍 Детальная диагностика ### Проверка локальных портов: ```bash # API приложения (должен отвечать) curl http://localhost:15100/health # Nginx (должен перенаправлять) curl -I http://localhost # Проверка подключения к базе sudo docker-compose -f docker-compose.production.yml exec app python -c " import asyncpg import asyncio async def test(): try: conn = await asyncpg.connect('postgresql://my_user:PASSWORD@postgres:5432/my_uploader_db') await conn.close() print('✅ База данных доступна') except Exception as e: print(f'❌ Ошибка подключения к БД: {e}') asyncio.run(test()) " ``` ### Проверка конфигурации nginx: ```bash sudo docker-compose -f docker-compose.production.yml exec nginx nginx -t ``` ### Просмотр логов в реальном времени: ```bash # Все сервисы sudo docker-compose -f docker-compose.production.yml logs -f # Только основное приложение sudo docker-compose -f docker-compose.production.yml logs -f app # Только nginx sudo docker-compose -f docker-compose.production.yml logs -f nginx ``` ## 🚀 Тестирование после исправления ```bash # 1. Проверьте статус всех контейнеров sudo docker-compose -f docker-compose.production.yml ps # 2. Проверьте health endpoints curl http://localhost:15100/health curl https://your-domain.com/health # 3. Проверьте основные endpoints curl -I https://your-domain.com/ curl https://your-domain.com/api/my/bootstrap/config ``` ## 📞 Если проблема не решается 1. **Соберите диагностическую информацию:** ```bash sudo /home/myuploader/uploader-bot/diagnose.sh your-domain.com > diagnostic_report.txt ``` 2. **Сохраните логи:** ```bash sudo docker-compose -f docker-compose.production.yml logs --tail=100 > all_logs.txt ``` 3. **Проверьте ресурсы системы:** ```bash docker stats --no-stream df -h free -h ``` ## ⚡ Экстренное восстановление Если ничего не помогает: ```bash # 1. Полная остановка sudo systemctl stop my-uploader-bot sudo docker-compose -f docker-compose.production.yml down -v # 2. Очистка и перезапуск sudo docker system prune -f sudo docker-compose -f docker-compose.production.yml pull sudo docker-compose -f docker-compose.production.yml up -d --build # 3. Проверка через 5 минут sleep 300 curl -v https://your-domain.com/health ``` ## 🎯 Ожидаемый результат После успешного исправления: - `curl http://localhost:15100/health` возвращает 200 OK - `curl https://your-domain.com/health` возвращает 200 OK - Все контейнеры в статусе "Up" - В логах нет критических ошибок