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