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

Express.js中域名访问/api/testlist路由返回404问题求助

问题排查与解决步骤

你的Express脚本本身路由逻辑无明显错误,IP+端口可正常访问/api/testlist已说明服务端接口正常,问题大概率出在Nginx反向代理配置上,以下是逐一排查方案:

1. 确认Express服务监听地址

当前脚本中app.listen(port)默认仅监听127.0.0.1(本地回环地址),若Nginx与Express在同一服务器,此配置可正常工作;但外部IP能访问服务,说明实际运行时需允许所有网卡请求,建议显式指定监听地址:

app.listen(port, '0.0.0.0', () => {
  console.log(`Server listening on 0.0.0.0:${port}`);
});

2. 修正Nginx反向代理配置

域名访问首页正常但/api/testlist返回404,通常是Nginx未正确转发/api开头的请求,以下是标准配置示例,可对比调整:

server {
    listen 80;
    server_name your-domain.com; # 替换为你的实际域名

    # 处理根路径请求
    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;
    }

    # 单独处理/api路径,确保完整转发
    location /api/ {
        proxy_pass http://localhost:3000/api/;
        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_pass末尾的/必须保留,否则Nginx会错误拼接路径,导致Express接收到的请求路径丢失/api前缀,最终返回404。

3. 验证并重启Nginx

修改配置后,先验证配置合法性:

nginx -t

验证通过后重启Nginx服务:

nginx -s reload

4. 修复脚本中MongoDB连接的潜在问题

脚本中client.connect()是异步操作,但用同步try/catch包裹无法捕获异步错误,可能导致后续数据库操作异常(虽不是当前404的直接原因,但需修正):

async function connectToMongo() {
  try {
    await client.connect();
    console.log('Connected to MongoDB');
  } catch (err) {
    console.error('Error connecting to MongoDB:', err);
    process.exit(1); // 连接失败时退出进程,避免服务异常运行
  }
}

connectToMongo();

按以上步骤调整后,域名访问/api/testlist即可正常返回数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:01:03