nakama/NGINX_CLIENT_MAX_BODY_SIZE.md

87 lines
3.0 KiB
Markdown
Raw Normal View History

2025-12-15 20:37:41 +00:00
# Исправление ошибки 413 при загрузке альбомов
## Проблема
При загрузке ZIP альбомов возникает ошибка 413 "Request Entity Too Large", даже после увеличения лимитов в Express и multer.
## Решение
Ошибка 413 возникает на уровне Nginx, который проксирует запросы к backend. Нужно увеличить `client_max_body_size` в конфигурации Nginx.
### Вариант 1: Если используется Nginx для проксирования к backend
Добавьте или увеличьте `client_max_body_size` в конфигурации Nginx:
```nginx
server {
listen 80;
server_name your-domain.com;
# Увеличить лимит загрузки до 110MB (больше чем на backend для безопасности)
client_max_body_size 110M;
location /api {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
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;
# Увеличить таймауты для больших загрузок
proxy_read_timeout 300s;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
}
}
```
### Вариант 2: Если используется docker-compose с nginx
Обновите `nginx-moderation-production.conf` или создайте отдельный конфиг для основного приложения:
```nginx
# Увеличить лимит загрузки
client_max_body_size 110M;
# Увеличить таймауты
client_body_timeout 300s;
client_header_timeout 300s;
```
### Вариант 3: Для production на сервере
Если приложение развернуто на сервере, нужно обновить конфигурацию Nginx:
1. Отредактируйте конфигурацию:
```bash
sudo nano /etc/nginx/sites-available/nakama
```
2. Добавьте или обновите:
```nginx
client_max_body_size 110M;
```
3. Проверьте конфигурацию:
```bash
sudo nginx -t
```
4. Перезапустите Nginx:
```bash
sudo systemctl reload nginx
```
## Проверка
После применения изменений попробуйте загрузить ZIP альбом размером до 105MB. Ошибка 413 должна исчезнуть.
## Примечание
Лимиты должны быть установлены в следующем порядке (от большего к меньшему):
1. Nginx: `client_max_body_size 110M` (больше всех)
2. Express: `limit: '105mb'`
3. Multer: `fileSize: 105 * 1024 * 1024`
Это обеспечивает, что запрос доходит до backend без ошибок.