fix: 미들웨어 Supabase hang으로 인한 모바일 접속 불가 해결

- /api/ 경로 전체를 미들웨어 매처에서 제외 (각 API 라우트가 자체 인증 처리)
- updateSession() 실패 시 try-catch로 페이지 접근 허용 (연결 hang 방지)
- supabase.auth.getUser() 오류 시 세션 갱신 생략하고 통과

원인: 모든 요청에 실행되는 Edge Runtime 미들웨어에서 Supabase
외부 API 호출이 일시 지연/실패 시 Vercel이 연결을 강제 종료,
Safari에서 "네트워크 서버를 찾을 수 없음"으로 표시됨

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-21 23:29:26 +09:00
parent 3f53594d3f
commit 64393e9740
2 changed files with 18 additions and 4 deletions

View File

@@ -44,11 +44,21 @@ export async function middleware(request: NextRequest) {
}
}
return await updateSession(request);
// API 라우트는 세션 갱신 불필요 — 각 API에서 독립적으로 인증 처리
if (pathname.startsWith('/api/')) {
return NextResponse.next();
}
// Supabase 세션 갱신 — 실패해도 페이지 접근은 허용
try {
return await updateSession(request);
} catch {
return NextResponse.next({ request });
}
}
export const config = {
matcher: [
'/((?!_next/static|_next/image|favicon.ico|api/telegram/webhook|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)',
'/((?!_next/static|_next/image|favicon.ico|api/|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)',
],
};