# Развёртывание production сайта ## Архитектура ``` ┌─────────────────────────────────────────────────────────┐ │ HTTPS :443 │ │ (host nginx + Let's Encrypt) │ └────────────────────┬────────────────────────────────────┘ │ ┌───────────┴───────────┐ │ │ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ │ Next.js site │ │ BFF API │ │ localhost:3000 │ │ localhost:3001 │ │ (Docker) │ │ (Docker) │ └─────────────────┘ └─────────────────┘ ``` ## 1. SSL сертификат (уже установлен) Сертификаты находятся в `/etc/letsencrypt/live/uno-click.pip-test.ru/` ## 2. Конфигурация nginx (обновлена) Хост nginx проксирует запросы: - `/` → Next.js на `127.0.0.1:3000` - `/api/` → BFF на `127.0.0.1:3001` - `/files/` → MinIO на `127.0.0.1:9000` ## 3. Запуск через docker-compose ```bash cd /opt/uno-click # Пересоберите образ site docker compose build site # Запустите все сервисы docker compose up -d ``` ## 4. Проверка - Сайт: https://uno-click.pip-test.ru/ - BFF API: https://uno-click.pip-test.ru/api/health ## 5. Логи ```bash # Все сервисы docker compose logs -f # Конкретный сервис docker compose logs -f site docker compose logs -f bff ``` ## 6. Обновление ```bash # Пересобрать и перезапустить site docker compose build site docker compose up -d site ``` ## CSRF защита Используется автоматическая CSRF защита через: - **SameSite=Lax** cookie — браузер автоматически блокирует cross-site запросы - Cookie автоматически отправляются с same-origin запросами - Не нужно вручную передавать `x-csrf-token` в заголовках