You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于包含API的Next.js应用通过Nginx部署的相关疑问

关于包含API的Next.js应用通过Nginx部署的相关疑问

Hey there! Awesome question—let’s unpack this because Next.js behaves quite differently from a standard React app, especially when API routes are involved.

First, let’s clarify a key point: Next.js API routes aren’t static files. Unlike React’s build artifacts (which are plain HTML/CSS/JS that Nginx can serve directly), Next.js API routes run on a Node.js server. They’re server-side code that needs to be executed, not just served as static assets.

So if you try to serve only the .next folder with Nginx, here’s what’ll happen:

  • The static parts of your UI (like pre-rendered pages, static assets) might load fine, since those are static files in .next/static.
  • But any request to your API routes (e.g., /api/your-endpoint) will fail—Nginx will look for a static file matching that path, can’t find it, and return a 404 error. There’s no Node runtime to execute the API route code.

Now, about PM2 and Nginx: they serve different roles here, so let’s break that down:

  • Nginx alone isn’t enough: It can’t run Node.js code, so it can’t handle API routes. You need a Node.js server running your Next.js app first. You can start this server with the next start command (after running next build to generate the .next folder).
  • PM2 is optional but recommended for production: next start will run the server, but if it crashes for any reason, it won’t restart automatically. PM2 is a process manager that keeps your Next.js server running 24/7, restarts it on crashes, and lets you monitor the process. It’s a good practice for production stability.
  • How they work together: Typically, you’ll use PM2 to run next start (keeping the Node server alive), then configure Nginx as a reverse proxy to forward incoming requests (both UI and API) to the Next.js server (usually running on localhost:3000). Nginx can also handle static asset caching, SSL certificates, load balancing, and other edge-level tasks to optimize performance.

One quick side note: If you’re using Next.js 13+ with the App Router, you might consider static export (next export), but this doesn’t support API routes—since static export generates only static files, there’s no server to run API code. So if your app relies on API routes, static export isn’t an option.

To sum up: You can’t just serve the .next folder with Nginx and expect API routes to work. You need a Node.js server running your Next.js app (started via next start), PM2 is a great tool to manage that server in production, and Nginx acts as a reverse proxy to handle incoming traffic and static assets.

备注:内容来源于stack exchange,提问作者tiger t

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:28:03