Edge Middleware
Middleware はクライアントからのリクエストに基づいてコードを実行できますが、これに加えてエッジロケーションで低レイテンシなデータの取得が可能な Edge Config を組み合わせる事で、コードの修正やデプロイを必要とせず、レスポンスを自由に変更出来るようになります。

メンテナンスモードを例にすると、以下のようなmiddleware.ts
を用意することで、ダッシュボードの Edge Config の値を変更するだけで/maintenance
へのリライトが可能になります。
import { NextRequest, NextResponse } from 'next/server'
import { get } from '@vercel/edge-config'
export async function middleware(request: NextRequest) {
const isMaintenance = await get('IS_MAINTENANCE')
if (process.env.VERCEL_ENV === 'production' && isMaintenance) {
return NextResponse.rewrite(new URL(`/maintenance`, request.url), {
headers: {
'Retry-After': '43200',
},
status: 503,
})
}
}
その他のユースケースとしてrequest.ip
やrequest.geo
を利用して、リクエスト元のIPアドレスや国・地域に基づいてレスポンスをハンドリングすることも可能です。