#!/bin/bash # scripts/check-nginx.sh - Проверка настроек nginx для CatLink set -e echo "🔍 Проверка настроек nginx для CatLink" echo "======================================" # Цвета для вывода RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Функция для проверки с цветным выводом check_status() { if [ $? -eq 0 ]; then echo -e "${GREEN}✅ $1${NC}" return 0 else echo -e "${RED}❌ $1${NC}" return 1 fi } echo "" echo -e "${BLUE}1. Проверка установки nginx${NC}" echo "------------------------" # Проверка установки nginx if command -v nginx &> /dev/null; then echo -e "${GREEN}✅ nginx установлен: $(nginx -v 2>&1)${NC}" else echo -e "${RED}❌ nginx не установлен${NC}" exit 1 fi # Проверка статуса nginx echo "" echo -e "${BLUE}2. Проверка статуса службы nginx${NC}" echo "-------------------------------" systemctl is-active nginx &> /dev/null check_status "nginx активен" systemctl is-enabled nginx &> /dev/null check_status "nginx включен в автозагрузку" echo "" echo -e "${BLUE}3. Проверка конфигурации nginx${NC}" echo "--------------------------------" # Проверка синтаксиса конфигурации sudo nginx -t &> /dev/null check_status "Синтаксис конфигурации nginx корректен" # Проверка наличия конфигурации для CatLink if [ -f "/etc/nginx/sites-available/links" ]; then echo -e "${GREEN}✅ Конфигурация CatLink найдена: /etc/nginx/sites-available/links${NC}" else echo -e "${RED}❌ Конфигурация CatLink не найдена${NC}" fi if [ -L "/etc/nginx/sites-enabled/links" ]; then echo -e "${GREEN}✅ Конфигурация CatLink активна: /etc/nginx/sites-enabled/links${NC}" else echo -e "${RED}❌ Конфигурация CatLink не активна${NC}" fi echo "" echo -e "${BLUE}4. Проверка портов${NC}" echo "----------------" # Проверка прослушиваемых портов if ss -tlnp | grep -q ":80.*nginx" 2>/dev/null; then echo -e "${GREEN}✅ nginx слушает порт 80${NC}" else echo -e "${RED}❌ nginx НЕ слушает порт 80${NC}" fi if ss -tlnp | grep -q ":443.*nginx" 2>/dev/null; then echo -e "${GREEN}✅ nginx слушает порт 443 (SSL)${NC}" else echo -e "${YELLOW}⚠️ nginx НЕ слушает порт 443 (SSL не настроен)${NC}" fi echo "" echo -e "${BLUE}5. Проверка доступности backend сервисов${NC}" echo "---------------------------------------" # Проверка доступности backend на порту 8000 if curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/api/ | grep -q "200\|404\|403"; then echo -e "${GREEN}✅ Backend доступен на localhost:8000${NC}" else echo -e "${RED}❌ Backend НЕ доступен на localhost:8000${NC}" fi # Проверка доступности frontend на порту 3000 if curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/ | grep -q "200\|404"; then echo -e "${GREEN}✅ Frontend доступен на localhost:3000${NC}" else echo -e "${RED}❌ Frontend НЕ доступен на localhost:3000${NC}" fi echo "" echo -e "${BLUE}6. Проверка доступности через nginx${NC}" echo "-----------------------------------" # Проверка главной страницы if curl -s -o /dev/null -w "%{http_code}" http://localhost/ | grep -q "200"; then echo -e "${GREEN}✅ Главная страница доступна через nginx${NC}" else echo -e "${RED}❌ Главная страница НЕ доступна через nginx${NC}" fi # Проверка API через nginx if curl -s -o /dev/null -w "%{http_code}" http://localhost/api/ | grep -q "200\|404\|403"; then echo -e "${GREEN}✅ API доступно через nginx${NC}" else echo -e "${RED}❌ API НЕ доступно через nginx${NC}" fi # Проверка admin через nginx if curl -s -o /dev/null -w "%{http_code}" http://localhost/admin/ | grep -q "200\|302"; then echo -e "${GREEN}✅ Admin доступен через nginx${NC}" else echo -e "${RED}❌ Admin НЕ доступен через nginx${NC}" fi echo "" echo -e "${BLUE}7. Проверка доменных имен${NC}" echo "--------------------------" # Проверка доступности по доменному имени if curl -s -o /dev/null -w "%{http_code}" http://links.shareon.kr/ | grep -q "200"; then echo -e "${GREEN}✅ Сайт доступен по домену links.shareon.kr${NC}" else echo -e "${YELLOW}⚠️ Сайт НЕ доступен по домену links.shareon.kr (проверьте DNS)${NC}" fi if curl -s -o /dev/null -w "%{http_code}" http://sharon.kr/ | grep -q "200"; then echo -e "${GREEN}✅ Сайт доступен по домену sharon.kr${NC}" else echo -e "${YELLOW}⚠️ Сайт НЕ доступен по домену sharon.kr (проверьте DNS)${NC}" fi echo "" echo -e "${BLUE}8. Проверка SSL сертификатов${NC}" echo "----------------------------" # Проверка SSL сертификатов if [ -d "/etc/letsencrypt/live/links.shareon.kr" ]; then echo -e "${GREEN}✅ SSL сертификат для links.shareon.kr найден${NC}" # Проверка срока действия сертификата if openssl x509 -in /etc/letsencrypt/live/links.shareon.kr/cert.pem -noout -checkend 604800 &> /dev/null; then echo -e "${GREEN}✅ SSL сертификат действителен более 7 дней${NC}" else echo -e "${YELLOW}⚠️ SSL сертификат истекает менее чем через 7 дней${NC}" fi else echo -e "${YELLOW}⚠️ SSL сертификат не найден${NC}" fi echo "" echo -e "${BLUE}9. Анализ конфигурации CatLink${NC}" echo "-------------------------------" if [ -f "/etc/nginx/sites-available/links" ]; then echo "📄 Содержимое конфигурации nginx для CatLink:" echo "==============================================" cat /etc/nginx/sites-available/links else echo -e "${RED}❌ Конфигурация не найдена${NC}" fi echo "" echo -e "${BLUE}10. Проверка логов nginx${NC}" echo "------------------------" echo "📊 Последние 5 строк из access.log:" sudo tail -5 /var/log/nginx/access.log 2>/dev/null || echo "Лог недоступен" echo "" echo "📊 Последние 5 строк из error.log:" sudo tail -5 /var/log/nginx/error.log 2>/dev/null || echo "Лог недоступен" echo "" echo -e "${BLUE}11. Рекомендации${NC}" echo "---------------" if ! systemctl is-active nginx &> /dev/null; then echo -e "${YELLOW}💡 Запустите nginx: sudo systemctl start nginx${NC}" fi if [ ! -f "/etc/nginx/sites-available/links" ]; then echo -e "${YELLOW}💡 Создайте конфигурацию: ./scripts/setup-nginx.sh${NC}" fi if [ ! -d "/etc/letsencrypt/live/links.shareon.kr" ]; then echo -e "${YELLOW}💡 Получите SSL сертификат: make ssl-cert${NC}" fi if ! curl -s -o /dev/null http://localhost:3000/; then echo -e "${YELLOW}💡 Запустите контейнеры: make up-prod${NC}" fi echo "" echo -e "${GREEN}🎉 Проверка nginx завершена!${NC}" echo "" echo -e "${BLUE}Для получения помощи:${NC}" echo "• Перезапуск nginx: sudo systemctl restart nginx" echo "• Проверка конфигурации: sudo nginx -t" echo "• Просмотр логов: sudo journalctl -u nginx -f" echo "• Настройка CatLink: ./scripts/setup-nginx.sh"