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