Next.js
HomeArticleGalleryContact
AboutTermsPrivacy
Theme Selector
2024年9月16日

アクセス制限

Middleware と Edge Config を利用したアクセス制御

Jane Doe

Edge Middleware

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

Edge Middleware Overview
Edge Middleware Overview

メンテナンスモードを例にすると、以下のような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アドレスや国・地域に基づいてレスポンスをハンドリングすることも可能です。

All Posts

261 views