Files
shop-server/docs/nginx-upload-limit.md
T
@kirill.komarov 33e387d05c deploy
2026-05-11 21:00:56 +05:00

2.3 KiB
Raw Blame History

Лимит размера запроса (413) за reverse proxy

Локально запросы идут напрямую в Node (Vite проксирует на Fastify) — тело до ~201 МБ (см. getMaxUploadBodyBytes() в server/src/lib/upload-limits.js).

На проде перед Node часто стоит nginx (или Caddy, Traefik). У nginx по умолчанию client_max_body_size 1m — загрузка картинки больше ~1 МБ даёт 413, хотя на локалке всё работает.

Nginx

В блоке http, server или в location /api/ (где проксируется API) задайте лимит не меньше максимального тела одного запроса загрузки:

  • один файл до 20 МБ — достаточно 25m;
  • до 10 файлов за один POST /api/admin/uploads — теоретически до ~200 МБ данных + multipart — разумно 250m или 300m.

Пример для location, который проксирует API:

location /api/ {
    client_max_body_size 250m;
    proxy_pass http://127.0.0.1:3333;
    proxy_http_version 1.1;
    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;
}

После правки конфига: sudo nginx -t && sudo systemctl reload nginx.

Переменные Node (если 413 не от nginx)

В server/.env не задавайте слишком маленькое MAX_UPLOAD_BODY_BYTES — иначе Fastify отрежет тело раньше прокси. По умолчанию считается как getProductImageMaxFileBytes() * 10 + 1 МБ. Если задали вручную — должно быть ≥ суммы ваших файлов в одном multipart-запросе.

Caddy (кратко)

В соответствующем site-блоке задайте лимит тела запроса по документации Caddy v2 (например, request_body с max_size).