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

如何托管Next.js+Express.js网站?寻求合适的部署方案

托管Next.js + Express网站的最佳方案及步骤细节

首先明确:带Node.js支持的cPanel主机(比如你提到的A2 Hosting)完全可行,但绝不是上传项目就完事,还有几个关键环节容易遗漏,下面给你理清楚:

一、先搞清楚Next.js的部署模式

你的项目包含Express后端,所以不能用Next.js的静态导出模式(next export),必须走服务器端渲染(SSR)/自定义服务器路线,这就要求主机必须能运行Node.js进程——cPanel的Node.js Selector工具就是干这个的。

二、cPanel托管的核心步骤(遗漏的环节都在这)

  1. 项目上传与目录规划
    别直接把项目塞到public_html里,建议放在/home/你的用户名/next-express-app这类根目录下的独立文件夹,避免源码暴露。上传的内容包括:

    • 本地执行npm run build生成的.next目录
    • Express的入口文件(比如server.js)
    • 生产依赖:本地执行npm ci --production后生成的node_modules(别传开发依赖,浪费空间)
    • package.json、package-lock.json
  2. 配置Node.js应用
    打开cPanel的「Node.js Selector」,创建新应用:

    • 指定项目的根目录(就是你刚才上传的文件夹)
    • 设置启动文件(比如你的Express入口是server.js)
    • 选择Node.js版本(建议和本地开发版本一致,或选LTS版)
    • 配置环境变量:比如NODE_ENV=production,还有数据库连接字符串、API密钥这类敏感信息,都要在这配置,别硬编码到代码里。
  3. 设置反向代理
    Node应用会跑在一个指定端口(比如3000),但用户访问你的域名时,请求是先到Apache/Nginx的,所以需要把请求转发到Node端口。可以通过编辑public_html下的.htaccess文件实现:

    RewriteEngine On
    # 根路径转发到Node端口
    RewriteRule ^$ http://127.0.0.1:3000/ [P,L]
    # 非静态文件的请求都转发
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ http://127.0.0.1:3000/$1 [P,L]
    

    注意把3000换成cPanel给你分配的实际端口。

  4. 启动与调试
    在Node.js Selector里启动应用,然后访问域名测试。如果出问题,去cPanel的「错误日志」或者Node应用的日志里找原因,常见问题比如端口占用、依赖缺失、环境变量没配置对。

三、替代方案:纯Node.js托管平台

如果觉得cPanel配置太繁琐,也可以选更适配的平台:

  • Vercel:Next.js官方推荐,对SSR、API路由、Express后端支持很好,部署流程简单,直接关联代码仓库自动构建部署。
  • 云服务器(比如DigitalOcean、AWS EC2):自由度最高,自己安装Node.js、Nginx,配置反向代理,适合需要自定义服务器环境的场景,但需要自己维护服务器安全和性能。

内容的提问来源于stack exchange,提问作者devos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 09:32:59