nakama/NGINX_CLIENT_MAX_BODY_SIZE.md

3.0 KiB
Raw Permalink Blame History

Исправление ошибки 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:

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 или создайте отдельный конфиг для основного приложения:

# Увеличить лимит загрузки
client_max_body_size 110M;

# Увеличить таймауты
client_body_timeout 300s;
client_header_timeout 300s;

Вариант 3: Для production на сервере

Если приложение развернуто на сервере, нужно обновить конфигурацию Nginx:

  1. Отредактируйте конфигурацию:
sudo nano /etc/nginx/sites-available/nakama
  1. Добавьте или обновите:
client_max_body_size 110M;
  1. Проверьте конфигурацию:
sudo nginx -t
  1. Перезапустите Nginx:
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 без ошибок.