Capítulo 234 de 456

proxyClientMaxBodySize

Core Idea

Quando proxy é usado, o Next.js clona e bufferiza o corpo da requisição em memória para permitir múltiplas leituras (no proxy e no route handler); esta opção limita o tamanho desse buffer para evitar consumo excessivo de memória.

Key Concepts

  • experimental.proxyClientMaxBodySize: limite padrão 10MB. Aceita string legível ('1mb', unidades b/kb/mb/gb) ou número em bytes.
  • Se o corpo excede o limite: só os primeiros N bytes são bufferizados, um warning é logado indicando a rota, a requisição continua normalmente (não falha), mas só o corpo parcial fica disponível.

Code Examples

import type { NextConfig } from 'next'
const nextConfig: NextConfig = {
  experimental: { proxyClientMaxBodySize: '1mb' },
}
export default nextConfig
import { NextRequest, NextResponse } from 'next/server'

export async function proxy(request: NextRequest) {
  const body = await request.text()
  console.log('Body size:', body.length)
  return NextResponse.next()
}
  • O que demonstra: configurar o limite e ler o corpo já bufferizado dentro de proxy(); o mesmo corpo continua disponível no route handler downstream.

Key Takeaways

  1. Excesso de tamanho nunca causa erro/falha da requisição, só truncamento silencioso (com warning no log).
  2. Limite é por-requisição, não agregado entre requisições concorrentes.
  3. Para uploads grandes, considere aumentar o limite; overhead extra de ~10-20KB é esperado por causa dos boundaries/headers do multipart/form-data.

Connects To

  • proxy (route convention): onde o corpo bufferizado é primeiro acessível.