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

在DirectAdmin上部署Next.js应用遇503错误求解决方案

解决Next.js + NGINX Unit部署503错误的排查步骤

1. 确认NGINX Unit服务状态

先检查Unit服务是否正常运行:

systemctl status unitd

如果服务未启动,执行以下命令启动并设置开机自启:

systemctl start unitd
systemctl enable unitd

同时查看Unit的实时日志,排查启动阶段的报错:

journalctl -u unitd -f

2. 验证Next.js应用本身的可运行性

  • 确保已完成生产构建:执行过next build,生成了.next目录
  • 尝试手动启动自定义服务,排查应用自身问题:
node server.js  # 替换为你的自定义服务入口文件名

如果手动启动失败,先解决应用层面的问题:比如依赖缺失就执行npm install;端口被占用就用lsof -i :<端口号>找到进程后kill -9 <PID>

3. 核对NGINX Unit配置文件

Unit配置文件通常位于/etc/unit/目录,确保配置的路径、命令、端口完全正确,参考示例配置:

{
  "listeners": {
    "*:3000": {
      "pass": "applications/nextjs_app"
    }
  },
  "applications": {
    "nextjs_app": {
      "type": "node",
      "working_directory": "/绝对路径/到/你的Next.js应用根目录",
      "executable": "server.js",
      "processes": 2
    }
  }
}

配置修改后重新加载Unit:

unitd-reload

4. 修复文件权限问题

NGINX Unit默认以unit用户运行,确保应用目录和文件对该用户有读写权限:

chown -R unit:unit /绝对路径/到/你的Next.js应用根目录
chmod -R 755 /绝对路径/到/你的Next.js应用根目录

5. 检查DirectAdmin反向代理配置

如果通过DirectAdmin的NGINX反向代理到Unit端口,确保代理规则正确,在域名对应的nginx.conf中添加:

location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

修改后重启NGINX服务:

service nginx restart

6. 查看应用专属日志

在Unit配置中添加日志路径,便于定位应用启动失败的具体原因:
在应用配置块中加入:

"log": {
  "access": "/var/log/unit/nextjs_access.log",
  "error": "/var/log/unit/nextjs_error.log"
}

重新加载配置后,查看错误日志:

tail -f /var/log/unit/nextjs_error.log

内容的提问来源于stack exchange,提问作者A .De

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:09:59