← nitronium.dev
Next.js /api/* rewrite SSE akışını buffer'lıyor
2026-06-30
Next.js next.config.ts içindeki afterFiles rewrite'lar backend'e proxy yaparken SSE (Server-Sent Events) response body'sini buffer'lıyor. Sonuç: client gerçek zamanlı event almıyor, bağlantı sanki çalışıyor ama veri yok.
Senaryo: Go backend SSE stream açıyor, Next.js /api/:path* rewrite ile proxy'liyor. Tailscale üzerinden bağlanan client "Waiting for events..." görmekten çıkmıyor.
Fix: /api/tasks/[taskId]/trace/stream/route.ts adında bir Next.js Route Handler oluştur. Route Handler, rewrite'ın önüne geçer ve upstream.body ReadableStream'i doğrudan client'a iletir — buffer yok.
`typescript
export const dynamic = "force-dynamic";
export async function GET(request: NextRequest, { params }) {
const upstream = await fetch(backendUrl, { headers: forwarded, signal: request.signal });
return new Response(upstream.body, {
headers: {
"Content-Type": "text/event-stream",
"Cache-Control": "no-cache",
"X-Accel-Buffering": "no",
},
});
}
`
Route Handler aynı zamanda nginx buffer'ını da devre dışı bırakıyor (X-Accel-Buffering: no). Rewrite ile bu header gönderilse bile body buffer'lanmaya devam ediyordu.