4.8 KiB
4.8 KiB
Устранение 502 ошибки MY Uploader Bot
🚨 Если получаете 502 Bad Gateway
Ошибка 502 означает, что nginx работает, но не может подключиться к backend приложению.
🔍 Быстрая диагностика
1. Запустите диагностический скрипт:
sudo /home/myuploader/uploader-bot/diagnose.sh my-public-node-3.projscale.dev
2. Проверьте статус контейнеров:
cd /home/myuploader/uploader-bot
sudo docker-compose -f docker-compose.production.yml ps
3. Проверьте логи приложения:
sudo docker-compose -f docker-compose.production.yml logs -f app
🛠️ Частые решения
Решение 1: Приложение еще запускается
# Подождите 2-3 минуты и проверьте снова
sleep 180
curl -v https://your-domain.com/health
Решение 2: Перезапуск сервисов
cd /home/myuploader/uploader-bot
sudo docker-compose -f docker-compose.production.yml restart app
Решение 3: Полная перезагрузка
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: Проверка базы данных
# Проверка 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
🔍 Детальная диагностика
Проверка локальных портов:
# 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:
sudo docker-compose -f docker-compose.production.yml exec nginx nginx -t
Просмотр логов в реальном времени:
# Все сервисы
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
🚀 Тестирование после исправления
# 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
📞 Если проблема не решается
- Соберите диагностическую информацию:
sudo /home/myuploader/uploader-bot/diagnose.sh your-domain.com > diagnostic_report.txt
- Сохраните логи:
sudo docker-compose -f docker-compose.production.yml logs --tail=100 > all_logs.txt
- Проверьте ресурсы системы:
docker stats --no-stream
df -h
free -h
⚡ Экстренное восстановление
Если ничего не помогает:
# 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 OKcurl https://your-domain.com/healthвозвращает 200 OK- Все контейнеры в статусе "Up"
- В логах нет критических ошибок