如何将已构建的Next.js网站上传至SiteGround主机并上线?
如何将Next.js构建产物(.next文件夹)部署到SiteGround主机
完全可行,SiteGround支持Node.js应用部署,以下是具体操作步骤:
1. 确认主机兼容性
SiteGround的GoGeek、Cloud方案原生支持Node.js应用;如果是StartUp方案,需要升级到更高套餐才能使用Node.js功能。登录SiteGround后台进入「Site Tools」,在「Devs」->「Node.js Manager」中可确认是否支持。
2. 准备部署文件
除了已构建好的.next文件夹,还需准备:
- 项目根目录的
package.json:必须包含start脚本,示例:"scripts": { "start": "next start -p 3000" } .env文件(如果项目用到环境变量)public文件夹(如果项目有静态资源)
注意:不要上传本地的
node_modules文件夹,SiteGround会自动安装依赖。
3. 上传文件到主机
- 使用SFTP工具(如FileZilla)连接SiteGround主机,将上述文件/文件夹上传到网站根目录的子文件夹(比如
/public_html/next-app),避免与其他网站内容冲突。 - 也可通过SiteGround后台的「File Manager」上传,但大文件推荐用SFTP更高效。
4. 创建Node.js应用
进入「Site Tools」->「Devs」->「Node.js Manager」,点击「Create Application」:
- 选择要绑定的域名
- 设置应用根目录为你上传文件的路径(如
/public_html/next-app) - 启动方式选择
npm start(SiteGround会自动识别package.json中的脚本) - 设置端口号(默认3000,后续反向代理会用到)
- 选择与本地构建一致的Node.js版本,避免兼容性问题
- 点击「Create」等待应用创建完成
5. 配置反向代理
这是让域名指向Node.js服务的关键步骤:
进入「Site Tools」->「Domains」->「Rewrite Rules」,添加新规则:
RewriteEngine On # 强制HTTPS(可选但推荐) RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # 将请求转发到Node.js服务 RewriteCond %{REQUEST_URI} !^/next-app/node_modules RewriteRule ^(.*)$ http://localhost:3000/$1 [P,L]
替换规则中的
3000为你设置的端口号,/next-app为你的应用文件夹路径。
6. 测试与排查
- 访问你的域名,检查页面是否正常加载。
- 若出现500错误,在「Node.js Manager」中查看应用日志,排查依赖缺失或版本不匹配问题。
- 若静态资源加载失败,检查
next.config.js是否设置了正确的assetPrefix(如应用不在根目录,需添加assetPrefix: '/next-app')。
7. 更新维护
后续更新应用时,本地重新执行npm run build生成新的.next文件夹,上传到主机覆盖旧文件,然后在「Node.js Manager」中重启应用即可。
内容的提问来源于stack exchange,提问作者Randresqf
相关产品推荐
相关产品推荐

