透過 100+ 個技巧的集合學習 Nuxt!

部署

了解如何將您的 Nuxt 應用程式部署到任何託管服務提供商。

Nuxt 應用程式可以部署在 Node.js 伺服器上、預先渲染以進行靜態託管,或部署到無伺服器或邊緣 (CDN) 環境。

如果您正在尋找支援 Nuxt 3 的雲端供應商列表,請參閱託管服務提供商章節。

Node.js 伺服器

探索使用 Nitro 的 Node.js 伺服器預設,以部署在任何 Node 託管上。

  • 預設輸出格式,如果沒有指定或自動偵測到
  • 僅載入呈現請求所需的區塊,以達到最佳的冷啟動時間
  • 適用於將 Nuxt 應用程式部署到任何 Node.js 託管

進入點

當使用 Node 伺服器預設執行 nuxt build 時,結果將是一個啟動可立即運行的 Node 伺服器的進入點。

終端機
node .output/server/index.mjs

這將啟動您的生產 Nuxt 伺服器,預設監聽端口 3000。

它遵循以下運行時環境變數

  • NITRO_PORTPORT (預設為 3000)
  • NITRO_HOSTHOST (預設為 '0.0.0.0')
  • NITRO_SSL_CERTNITRO_SSL_KEY - 如果兩者都存在,這將以 HTTPS 模式啟動伺服器。在絕大多數情況下,除了測試之外,不應使用此功能,Nitro 伺服器應在反向代理(如 nginx 或 Cloudflare)之後運行,後者終止 SSL。

PM2

PM2 (Process Manager 2) 是一個快速且簡單的解決方案,用於在您的伺服器或 VM 上託管您的 Nuxt 應用程式。

要使用 pm2,請使用 ecosystem.config.cjs

ecosystem.config.cjs
module.exports = {
  apps: [
    {
      name: 'NuxtAppName',
      port: '3000',
      exec_mode: 'cluster',
      instances: 'max',
      script: './.output/server/index.mjs'
    }
  ]
}

叢集模式

您可以使用 NITRO_PRESET=node_cluster 以利用 Node.js cluster 模組的多進程效能。

預設情況下,工作負載會使用循環策略分配給 worker。

了解更多

Nitro 文件中閱讀更多關於 node-server 預設的資訊
觀看 Daniel Roe 關於此主題的短片。

靜態託管

有兩種方法將 Nuxt 應用程式部署到任何靜態託管服務

  • 靜態網站生成 (SSG),搭配 ssr: true 在建置時預先渲染應用程式的路由。(這是運行 nuxi generate 時的預設行為。)它還將生成 /200.html/404.html 單頁應用程式後備頁面,這些頁面可以在客戶端上渲染動態路由或 404 錯誤(儘管您可能需要在靜態主機上配置此項)。
  • 或者,您可以使用 ssr: false (靜態單頁應用程式)預先渲染您的網站。這將產生 HTML 頁面,其中包含一個空的 <div id="__nuxt"></div>,您的 Vue 應用程式通常會在其中渲染。您將失去預先渲染網站的許多 SEO 優勢,因此建議改用 <ClientOnly> 來包裝網站中無法伺服器渲染的部分(如果有的話)。
Nuxt 預先渲染中閱讀更多資訊。

僅限客戶端渲染

如果您不想預先渲染您的路由,使用靜態託管的另一種方法是在 nuxt.config 檔案中將 ssr 屬性設定為 falsenuxi generate 命令隨後將輸出一個 .output/public/index.html 進入點和 JavaScript 捆綁包,就像經典的客戶端 Vue.js 應用程式一樣。

nuxt.config.ts
export default 
defineNuxtConfig
({
ssr
: false
})

託管服務提供商

Nuxt 可以部署到多個雲端供應商,只需最少的配置

部署中閱讀更多資訊。

預設

除了 Node.js 伺服器和靜態託管服務之外,Nuxt 專案還可以通過幾個經過良好測試的預設和最少的配置進行部署。

您可以在 nuxt.config.ts 檔案中顯式設定所需的預設

nuxt.config.ts
export default 
defineNuxtConfig
({
nitro
: {
preset
: 'node-server'
} })

... 或者在運行 nuxt build 時使用 NITRO_PRESET 環境變數

終端機
NITRO_PRESET=node-server nuxt build

🔎 查看 Nitro 部署以了解所有可能的部署預設和供應商。

CDN 代理

在大多數情況下,Nuxt 可以與並非由 Nuxt 本身生成或建立的第三方內容一起使用。但有時此類內容可能會導致問題,尤其是 Cloudflare 的「最小化和安全選項」。

因此,您應確保在 Cloudflare 中取消選取/禁用以下選項。否則,不必要的重新渲染或 hydration 錯誤可能會影響您的生產應用程式。

  1. Speed > Optimization > Content Optimization > 禁用「Rocket Loader™」
  2. Speed > Optimization > Image Optimization > 禁用「Mirage」
  3. Scrape Shield > 禁用「Email Address Obfuscation」

通過這些設定,您可以確保 Cloudflare 不會將腳本注入到您的 Nuxt 應用程式中,這可能會導致不必要的副作用。

它們在 Cloudflare 儀表板上的位置有時會更改,因此請隨時查看。