Capítulo 314 de 456
Multi-Zones divide um domínio grande em várias aplicações Next.js independentes, cada uma servindo um conjunto de paths, permitindo build/deploy separados e até frameworks diferentes por zona.
assetPrefix configurado pra evitar conflito de assets estáticos com outras zonas (a zona "default", que pega os paths restantes, não precisa de assetPrefix).rewrites: uma das apps Next.js roteia paths pra outras zonas usando destination com URL completa (scheme+domínio), inclusive apontando pra localhost em dev.rewrites quando a decisão de rota precisa ser dinâmica (ex.: feature flag durante migração); tem mais latência que rewrites.<a> normal, não <Link>, porque <Link> tenta prefetch/soft navigate em paths relativos, o que não funciona cross-zone.async rewrites() {
return [
{ source: '/blog', destination: `${process.env.BLOG_DOMAIN}/blog` },
{ source: '/blog/:path+', destination: `${process.env.BLOG_DOMAIN}/blog/:path+` },
{ source: '/blog-static/:path+', destination: `${process.env.BLOG_DOMAIN}/blog-static/:path+` },
]
}
rewrites.export async function proxy(request) {
const { pathname, search } = request.nextUrl
if (pathname === '/your-path' && myFeatureFlag.isEnabled()) {
return NextResponse.rewrite(`${rewriteDomain}${pathname}${search}`)
}
}
<Link> pra navegar entre zonas: prefetch/soft navigate não funciona cross-zone, precisa ser <a> puro.rewrites é preferível a Proxy pra roteamento entre zonas, por menor latência; Proxy só quando a decisão precisa ser dinâmica.