3.4 KiB
3.4 KiB
🌐 Настройка для разных доменов (Frontend и API)
Ситуация
- Frontend:
nakama.glpshchn.ru(старый домен) - API:
nkm.guru(новый домен)
✅ Что нужно сделать
1. Обновить CORS на backend
В файле .env на сервере добавьте оба домена:
# Разрешить запросы с обоих доменов
CORS_ORIGIN=https://nakama.glpshchn.ru,https://nkm.guru
Или если хотите разрешить все домены (менее безопасно, но проще):
CORS_ORIGIN=*
2. Обновить Content Security Policy
В backend/middleware/security.js нужно разрешить подключения к новому API домену:
connectSrc: ["'self'", "https://api.telegram.org", "https://e621.net", "https://gelbooru.com", "https://nkm.guru"],
3. Пересобрать frontend с новым API URL
cd /var/www/nakama/frontend
# Установить переменную окружения для сборки
export VITE_API_URL=https://nkm.guru/api
# Пересобрать frontend
npm run build
# Перезапустить nginx
sudo systemctl reload nginx
4. Перезапустить backend
# Если используете PM2:
pm2 restart nakama-backend
# Или если используете Docker:
docker-compose restart backend
🔍 Проверка
После настройки проверьте:
-
CORS работает:
curl -H "Origin: https://nakama.glpshchn.ru" \ -H "Access-Control-Request-Method: GET" \ -H "Access-Control-Request-Headers: Content-Type" \ -X OPTIONS \ https://nkm.guru/api/health -
В консоли браузера (F12 → Network):
- Запросы должны идти на:
https://nkm.guru/api/... - Headers должны содержать:
Access-Control-Allow-Origin: https://nakama.glpshchn.ru
- Запросы должны идти на:
⚠️ Важно
-
Cookies: Если используете cookies для авторизации, убедитесь, что:
withCredentials: trueв axios (уже настроено)credentials: trueв CORS (уже настроено)- Cookies должны быть с правильным
SameSiteиSecureфлагами
-
SSL сертификаты: Оба домена должны иметь валидные SSL сертификаты
-
Telegram Mini App: Если используете Telegram Mini App, убедитесь, что домен frontend добавлен в настройки бота
🔄 Альтернативное решение: Проксирование через nginx
Если не хотите настраивать CORS, можно настроить проксирование на старом домене:
# В nginx конфигурации для nakama.glpshchn.ru
location /api {
proxy_pass https://nkm.guru/api;
proxy_set_header Host nkm.guru;
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;
}
Тогда frontend будет использовать относительный путь /api, а nginx будет проксировать запросы на новый домен.