Next.js SSR 项目生产部署全攻略

 更新时间:2026年03月17日 09:12:35   作者:程序员爱钓鱼  
本文主要介绍了Next.js SSR 项目生产部署全攻略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Next.js 是 React 生态中非常流行的前端框架,支持 SSR(Server-Side Rendering)API 路由静态生成。在开发阶段,Next.js 可以通过 next dev 运行,但在生产环境下,我们需要打包并部署 SSR 服务。本文将介绍完整的 Next.js SSR 生产部署流程,适用于 1Panel 或 VPS 服务器。

一、 本地准备

假设你的 Next.js 项目目录如下:

package.json
package-lock.json / yarn.lock
pages/
public/
components/
next.config.js
node_modules/

SSR 项目需要 Node.js 后端支持,因此生产环境必须有 Node.js 环境。

二、安装依赖

如果使用 npm:

npm install

如果使用 yarn:

yarn install

确保依赖完整,尤其是 next、react 和 react-dom。

三、 构建生产版本

Next.js 提供 next build 命令生成生产构建产物:

npm run build
# 或者
yarn build
  • 会生成 .next/ 目录,包含 SSR 所需文件
  • 构建完成后可以通过 next start 启动生产服务

四、 测试生产环境(可选)

npm start
# 或者
yarn start
  • 默认端口 3000
  • 确认 SSR 页面可以正常访问

五、准备上传文件

生产部署至少需要以下内容:

package.json
package-lock.json / yarn.lock
.next/        # SSR 构建产物
public/       # 静态资源
node_modules/ # 可上传,也可服务器安装

可以打包成 ZIP 上传:

zip -r next-prod.zip package.json package-lock.json .next public .env

六、上传到服务器 / 1Panel

  • 1Panel:直接上传 ZIP 或 Git 克隆项目
  • VPS / 云服务器:通过 scp 上传
scp next-prod.zip user@yourserver:/path/to/app
ssh user@yourserver
unzip next-prod.zip -d next-app
cd next-app

七、安装生产依赖(如果未上传 node_modules)

npm install --production
# 或者
yarn install --production

SSR 生产环境只需要安装 dependencies,不需要 devDependencies

八、配置环境变量

Next.js SSR 项目常用环境变量:

NODE_ENV=production
PORT=3000
NEXT_PUBLIC_API_URL=https://api.example.com

可以在服务器环境中设置,也可以使用 .env.production 文件

九、启动生产 SSR 服务

方式一:直接 Node.js

npm start
# 或者
yarn start
  • 访问 http://你的域名或公网IP:3000
  • 页面由服务器渲染并返回 HTML(SSR)

方式二:PM2 守护

npm install -g pm2
pm2 start npm --name "next-app" -- start
pm2 save
pm2 startup
  • 保证服务器重启后自动启动
  • 提供日志管理和进程监控

方式三:Docker 部署(可选)

Dockerfile 示例

FROM node:20-alpine

WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
RUN npm run build
CMD ["npm", "start"]
EXPOSE 3000

构建 & 运行:

docker build -t next-app .
docker run -d -p 3000:3000 next-app

十、 可选:Nginx 反向代理 + HTTPS

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  • 配合 Let's Encrypt 可免费启用 HTTPS
  • 提高安全性与稳定性

十一、完整部署流程总结

  1. 本地 npm install / yarn install
  2. npm run build / yarn build 生成 .next/
  3. 上传 .next/ + public/ + package.json + node_modules(可选)
  4. 服务器安装依赖(如需要)
  5. 配置环境变量
  6. 使用 npm start / PM2 / Docker 启动
  7. 可选 Nginx 反向代理 + HTTPS
  8. 访问页面,确认 SSR 正常渲染

十二、 小技巧

  • 端口管理:1Panel 默认分配公网端口,确保 PORT 与之匹配
  • 守护进程:PM2 或 Docker 保证 SSR 服务稳定运行
  • 环境变量:生产环境变量一定要配置正确,否则 SSR 可能报错
  • 安全与性能:建议 Nginx 反向代理 + HTTPS

通过以上步骤,你可以快速将 Next.js SSR 项目 打包、上传,并在 1Panel 或 VPS 上运行生产环境,实现服务端渲染。

到此这篇关于Next.js SSR 项目生产部署全攻略的文章就介绍到这了,更多相关Next.js SSR生产部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • bootstrap-closable-tab可实现关闭的tab标签页插件

    bootstrap-closable-tab可实现关闭的tab标签页插件

    这篇文章主要为大家详细介绍了bootstrap-closable-tab可实现关闭的tab标签页插件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • ionic 自定义弹框效果

    ionic 自定义弹框效果

    这篇文章主要介绍了ionic 自定义弹框效果,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-06-06
  • 微信小程序web-view不支持打开非业务域名https //XXXX 请重新配置的解决办法

    微信小程序web-view不支持打开非业务域名https //XXXX 请重新配置的解决办法

    小程序现在日渐成熟,功能也越来越强大,我们今天来一起看看小程序跳转H5页面的问题,下面这篇文章主要给大家介绍了关于微信小程序web-view不支持打开非业务域名https //XXXX 请重新配置的解决办法,需要的朋友可以参考下
    2022-08-08
  • js日期格式化yyyy-MM-dd问题

    js日期格式化yyyy-MM-dd问题

    这篇文章主要介绍了js日期格式化yyyy-MM-dd问题,具有很好的参考价值,希望对大家大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • layer.js open 隐藏滚动条的例子

    layer.js open 隐藏滚动条的例子

    今天小编就为大家分享一篇layer.js open 隐藏滚动条的例子,具有很好的参考价值,希望对大家有所帮助。 一起跟随小编过来看看吧
    2019-09-09
  • JavaScript中的错误处理全面指南

    JavaScript中的错误处理全面指南

    在JavaScript开发中,错误处理是一个不可忽视的重要环节,本文将深入探讨JavaScript中的错误处理机制,包括错误的类型、捕获与抛出错误的方法,需要的可以参考下
    2024-10-10
  • JavaScript中链式调用之研习

    JavaScript中链式调用之研习

    方法链一般适合对一个对象进行连续操作(集中在一句代码)。一定程度上可以减少代码量,缺点是它占用了函数的返回值。
    2011-04-04
  • 微信小程序sessionid不一致问题解决

    微信小程序sessionid不一致问题解决

    这篇文章主要介绍了微信小程序sessionid不一致问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 微信小程序生成分享海报方法(附带二维码生成)

    微信小程序生成分享海报方法(附带二维码生成)

    这篇文章主要介绍了微信小程序生成分享海报方法(附带二维码生成),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • js通过地址栏给action传值(中文乱码全是问号)

    js通过地址栏给action传值(中文乱码全是问号)

    我从js代码中通过地址栏传值给了action的相应变量,但是,如果变量值为中文的时候,在action中测试输出则为问号
    2013-05-05

最新评论