nakama/CROSS_DOMAIN_SETUP.md

102 lines
3.4 KiB
Markdown
Raw Permalink Normal View History

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