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

CloudWays环境下NodeJS路由异常:仅根路径可用其他均404

CloudWays上Node.js Express路由仅根路径可访问,其余返回404的解决方法

核心问题分析

你的Express代码本身路由定义没有语法错误,出现非根路径404的原因大多和CloudWays的服务器配置有关,以下是针对性的解决步骤:


1. 修正Nginx反向代理配置

CloudWays默认的Nginx配置可能仅转发根路径请求到Node.js应用,需要修改配置让所有路径请求都被转发:

  • 登录CloudWays控制面板,进入目标应用的管理页面
  • 进入Application Settings > Custom Nginx Config
  • 在Server Block区域添加/替换以下配置:
    location / {
        proxy_pass http://127.0.0.1:PORT; # 将PORT替换为你的应用实际监听端口(可在CloudWays环境变量中查看)
        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;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    
  • 保存配置后,在Services选项中重启Nginx服务

2. 确认应用监听正确端口

CloudWays会为Node.js应用分配专属端口,而非默认的3000:

  • 进入应用的Application Settings > Environment Variables
  • 检查是否存在PORT变量,值为CloudWays分配的端口(通常为30000以上数值)
  • 若不存在,手动添加PORT变量并设置对应端口值
  • 你的代码中const PORT = process.env.PORT || 3000;的写法是正确的,无需修改

3. 排查静态文件中间件冲突

如果你的应用使用了express.static中间件,需确保它放在所有路由定义之前,避免静态文件目录中存在与路由同名的文件(会优先返回静态文件导致路由404)。

4. 补充代码中缺失的变量

你的代码里storeId和accessToken未定义,虽然这不会导致404,但会让/produtos和/carrinho路由返回500错误,需补充定义:

const storeId = '你的Tiendanube商店ID';
const accessToken = '你的Tiendanube访问令牌';

验证修改

完成上述配置后,在CloudWays面板的Application选项中重启Node.js应用,然后测试所有路由:

  • https://你的域名/teste
  • https://你的域名/produtos
  • https://你的域名/carrinho

内容的提问来源于stack exchange,提问作者João Paulo Moreira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:55:04