2.3 KiB
Лимит размера запроса (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).