nakama/CROSS_DOMAIN_SETUP.md

102 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🌐 Настройка для разных доменов (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 будет проксировать запросы на новый домен.