跳到主內容

【Next.js】 部署模式總覽

下面整理 Next.js 的主要部署類型、每種模式的特性與常見應用場景,並特別解釋 standalone 是什麼以及它適合的情境。


1️⃣ Next.js 部署模式總覽

部署類型 next.config.js / 指令 產物 特性與適用場景
1. Node Server (傳統模式) next build && next start .next/ 預設,完整支援 SSR、ISR、API Routes。部署到任何 Node 環境(PM2、Docker、K8s、AWS EC2、GCP、Heroku…)。
2. Standalone output: 'standalone' + next build .next/standalone + .next/static 只輸出最小可執行檔(server.js + 必要檔案),方便 Docker/容器化。功能與 Node Server 相同(SSR/ISR/API Routes 皆可)。
3. Static Export next exportoutput: 'export' out/ 完全靜態 HTML/CSS/JS。無 SSR/ISR/API Routes。適合純內容網站、部落格、文件站。
4. Edge Runtime / Vercel runtime: 'edge' 或自動判斷 Vercel Edge Functions (或 Cloudflare Workers) 以 Web 標準 API 為基礎,無 Node built-ins。啟動極快、全球節點分布,適合 Middleware、即時驗證、A/B 測試。
5. Serverless Functions Vercel / AWS Lambda Lambda zip 每個頁面/Route 轉成獨立 Serverless Function。可自動擴展,適合不維護長駐伺服器的架構。
6. Custom Server 自行建立 server.jsnext() .next/ 自定義 Node 伺服器,整合 Koa/Express/Fastify,做複雜路由或中介層。
註:模式之間可以組合,例如 Node Server + StandaloneVercel Serverless + Edge Middleware

模式 需 Node.js Runtime 常見部署基底 代表場景
Node Server Node image / VM 全功能 SSR/ISR + API
Standalone ✅ (但包體精簡) Node image / VM Docker/K8s 輕量部署
Static Export Nginx、GitHub Pages、S3+CDN 純靜態內容
Edge Runtime ❌ (Web Worker API) Vercel Edge / Cloudflare Workers 全球低延遲運算、Middleware
Serverless Functions ✅ (平台提供) AWS Lambda / Vercel Functions 無伺服器、自動擴展
Custom Server Node image / VM 自訂路由、混合架構

2️⃣ 各模式詳解

Node Server (預設)

  • 啟動next build && next start

  • 產物.next/ 目錄

  • 特性:完整支援 SSR、ISR、API Routes。

  • 適用:自行管理伺服器(EC2、Kubernetes、Docker Swarm、Heroku…)。

  • 優缺:最彈性,但部署包體積較大,需要完整 node_modules。


Standalone

  • 設定

    // next.config.js
    module.exports = {
      output: 'standalone',
    }
    
  • 產物

    .next/standalone      # 精簡 Node 專案,可直接 node server.js
    .next/static          # 靜態資源
    
  • 原理

    • next build 會分析依賴,只把執行需要的檔案、node_modules 打包進 standalone

    • 不再需要完整專案原始碼,也不必把整個 node_modules 打進 Docker。

  • 適用場景

    • Docker / 容器化:
      只複製 .next/standalone + .next/static,image 更小、build 更快。

    • Kubernetes / ECS:
      配合多階段 Docker build,把 RUN npm ci 階段與最終執行環境分離。

  • 功能:與 Node Server 相同(SSR / ISR / API Routes 全支援)。


Static Export

  • 指令next build && next export

  • 產物out/ 完全靜態

  • 限制:無 SSR、無 API Routes、無 ISR。

  • 適用

    • 部落格、說明文件、Landing Page

    • 部署到任何靜態空間(S3+CloudFront、GitHub Pages、Netlify)。


Edge Runtime / Middleware

  • 用法:在頁面或 route handler 中 export const runtime = 'edge'

  • 部署:Vercel Edge Functions、Cloudflare Workers、Deno Deploy。

  • 特性:全球節點極低延遲;不能用 Node built-ins。

  • 適用

    • 驗證/權限檢查

    • A/B 測試、URL 轉向

    • 即時 Header/Cookie 操作


Serverless Functions (Vercel / AWS Lambda)

  • 部署:Vercel 自動化,或 serverless-http 將 Next 整包轉為 Lambda。

  • 特性

    • 每個頁面/路由轉成獨立 Lambda。

    • 自動擴展、免維運。

  • 適用

    • 高併發但流量不穩定。

    • 只需 Node 短期計算、不需長連線。


Custom Server

  • 方式:建立 server.js

    const express = require('express')
    const next = require('next')
    const app = next({ dev: false })
    const handle = app.getRequestHandler()
    app.prepare().then(() => {
      const server = express()
      server.get('/health', (req, res) => res.send('ok'))
      server.all('*', (req, res) => handle(req, res))
      server.listen(3000)
    })
    
  • 適用

    • 需要與既有 Node 架構整合。

    • 自訂路由、中介層或 WebSocket。


3️⃣ 如何選擇

需求 建議模式
企業內部、自管 Docker/K8s Standalone (Node Server):產物小、部署快
純靜態內容、無後端邏輯 Static Export
全球極低延遲、近使用者運算 Edge Runtime / Middleware
彈性擴展、免維運 Serverless Functions (Vercel / AWS Lambda)
需與自訂 Node 架構整合 Custom Server

✅ 總結

  • StandaloneNode Server 模式的輕量化打包,非常適合容器化部署。

  • 如果要保留完整 SSR、ISR、API Routes,又希望 映像檔小、啟動快,選 Standalone 幾乎是最佳解。

  • 其他模式(Static Export、Edge、Serverless)則依你的應用是否需要即時運算、全球分佈或純靜態內容來決定。


📊 Next.js 部署模式功能支援度

部署模式 需要 Node Runtime SSR ISR API Routes 適用場景
Node Server (next build && next start) 傳統部署,功能完整。適合自管伺服器、Docker、K8s。
Standalone (output: 'standalone') 與 Node Server 相同,但打包精簡,適合容器化。
Static Export (next export) 只能輸出純 HTML/JS/CSS。適合靜態網站(部落格、Landing Page)。
Serverless Functions (Vercel / AWS Lambda) ✅(平台提供) 拆分成獨立 Functions,自動擴展。適合流量不穩的專案。
Edge Runtime (runtime: 'edge') ❌(Web API 而非 Node) ⚠️ 部分支援(僅 Server Components,可撈 API) ⚠️ 部分支援(需 Web API,不支援 Node drivers) 全球低延遲運算、Middleware、A/B 測試。
Custom Server (Express/Koa/Fastify + Next) 自訂路由/中介層,整合既有 Node 架構。

📌 補充說明

  • Static Export:因為沒有 Node 伺服器 → 無法即時渲染(SSR)、無法再生(ISR)、無 API Routes

  • Edge Runtime

    • 可以做 SSR(例如 Server Components 即時抓資料),但無 Node API(不能用 fs、原生 DB drivers)。

    • 適合處理 Header、Cookie、權限驗證、低延遲資料讀取。

  • Serverless Functions:Vercel/AWS 會把 SSR/ISR/API Route 拆成獨立 Function → 自動擴展,但要注意冷啟動與 DB 連線池。


🎯 總結

  • 要完整功能(SSR/ISR/API Routes) → 用 Node ServerStandalone

  • 要純靜態內容 → 用 Static Export

  • 要全球低延遲 → 用 Edge Runtime(但功能有限制)。

  • 要免維運,自動擴展 → 用 Serverless Functions(Vercel、AWS Lambda)。