nakama/PROXY_INFO.md

149 lines
6.1 KiB
Markdown
Raw 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.

# 🌍 Проксирование API для доступа из РФ
## Обзор
NakamaSpace автоматически проксирует все запросы к внешним API (e621 и gelbooru) через ваш сервер. Это обеспечивает доступность контента для пользователей из РФ, где эти ресурсы могут быть заблокированы.
## Как это работает
### 1. API запросы
Все запросы к e621 и gelbooru выполняются **с вашего сервера**, а не напрямую от клиента:
```
Клиент → Ваш сервер → e621/gelbooru API → Ваш сервер → Клиент
```
**Эндпоинты:**
- `/api/search/furry` - поиск в e621
- `/api/search/anime` - поиск в gelbooru
- `/api/search/furry/tags` - автокомплит тегов e621
- `/api/search/anime/tags` - автокомплит тегов gelbooru
### 2. Проксирование изображений
URL изображений автоматически конвертируются в прокси-URL:
**До:**
```
https://static1.e621.net/data/sample/12/34/1234567890abcdef.jpg
```
**После:**
```
/api/search/proxy/aHR0cHM6Ly9zdGF0aWMxLmU2MjEubmV0L2RhdGEvc2FtcGxlLzEyLzM0LzEyMzQ1Njc4OTBhYmNkZWYuanBn
```
Изображения стримятся через ваш сервер с кэшированием на 24 часа.
### 3. Безопасность
Проксирование разрешено только для следующих доменов:
- `e621.net`
- `static1.e621.net`
- `gelbooru.com`
- `img3.gelbooru.com`
- `img2.gelbooru.com`
- `img1.gelbooru.com`
- `simg3.gelbooru.com`
- `simg4.gelbooru.com`
Запросы к другим доменам будут отклонены с ошибкой 403.
## Производительность
### Оптимизация
1. **Стриминг** - изображения передаются потоком без полной загрузки в память
2. **Кэширование** - заголовок `Cache-Control: public, max-age=86400` (24 часа)
3. **Таймаут** - 30 секунд для загрузки изображения
### HTTP заголовки
```javascript
{
'User-Agent': 'NakamaSpace/1.0',
'Referer': originalUrl.origin,
'Content-Type': // из ответа источника
'Cache-Control': 'public, max-age=86400',
'Content-Length': // из ответа источника
}
```
## Мониторинг
### Логирование ошибок
Все ошибки проксирования логируются:
```javascript
console.error('Ошибка проксирования изображения:', error.message);
```
### Типичные ошибки
1. **403 Forbidden** - попытка проксировать запрещенный домен
2. **500 Internal Server Error** - ошибка загрузки с источника
3. **Timeout** - источник не отвечает более 30 секунд
## Требования к серверу
### Сетевой доступ
Ваш сервер должен иметь **прямой доступ** к:
- `e621.net` (HTTPS)
- `gelbooru.com` (HTTPS)
**Рекомендация:** используйте сервер **вне РФ** (например, Railway EU/US, Heroku, DigitalOcean)
### Пропускная способность
Учитывайте трафик проксируемых изображений:
- Preview изображения: ~100-500 KB
- Полные изображения: 1-10 MB
- На 1000 запросов поиска: ~500 MB - 5 GB трафика
## Код
Основная реализация находится в:
```
backend/routes/search.js
```
**Ключевые функции:**
- `createProxyUrl(originalUrl)` - конвертация URL в прокси-URL
- `GET /api/search/proxy/:encodedUrl` - эндпоинт проксирования
## Тестирование
### Проверка работы прокси
1. Откройте приложение
2. Перейдите в раздел "Поиск"
3. Выполните поиск по тегу
4. Откройте DevTools → Network
5. Убедитесь, что изображения загружаются с `/api/search/proxy/...`
### Проверка из РФ
1. Попросите пользователя из РФ протестировать
2. Изображения должны загружаться без VPN
3. Если не работает - проверьте, что сервер вне РФ
## FAQ
### Q: Можно ли добавить другие источники?
A: Да, добавьте домен в `allowedDomains` и обновите логику в обработчиках поиска.
### Q: Влияет ли это на скорость?
A: Минимально. Стриминг и кэширование минимизируют задержки. Первая загрузка может быть медленнее, но последующие - быстрее благодаря кэшу.
### Q: Нужно ли настраивать CDN?
A: Нет, но рекомендуется для production с большим трафиком. Можно использовать Cloudflare перед вашим сервером.
### Q: Работает ли это в China?
A: Частично. Зависит от локации сервера и блокировок. Рекомендуется азиатский регион для китайских пользователей.
## Обновление документов
Информация о проксировании добавлена в:
- [x] `README.md` - раздел "Поиск"
- [x] `DEPLOYMENT.md` - раздел "Доступность для пользователей из РФ"
- [x] `PROJECT_STRUCTURE.md` - список API эндпоинтов
- [x] `SETUP.md` - список API эндпоинтов
---
**Готово!** 🎉 Ваш NakamaSpace теперь доступен пользователям из РФ без VPN!