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

Express路由在生产服务器不生效,访问/test返回404如何解决?

问题排查方案

1 优先验证代码本身有效性

你贴出的代码逻辑没有问题,路由定义顺序也符合Express优先级规则,先在本地启动服务,分别访问http://localhost:3000和http://localhost:3000/test,确认两个接口返回正常,排除本地代码逻辑错误。

2 排查生产环境反向代理配置

这是该类问题最常见的诱因,生产环境一般会用Nginx、Apache、IIS等作为上层服务反向代理请求到Node进程:

  • 确认反向代理规则是否把所有域名下的请求都完整转发到Node服务监听的端口,很多错误配置只会转发根路径/的请求,子路径/test的请求被上层服务当成静态资源查找,自然返回404。

举个常见的错误Nginx配置参考:

# 错误配置:单独拦截了/test路径作为静态资源目录
location /test {
  root /var/www/static;
}
location / {
  proxy_pass http://127.0.0.1:3000;
}
  • 如果用IIS+iisnode部署,检查web.config的重写规则,是否把所有请求都转发到app.js入口,没有对子路径做额外拦截。

3 验证请求路径匹配规则

  • 确认你访问的生产地址路径和路由定义是否一致,比如是否多了部署前缀,比如实际访问的是https://yourdomain.com/project/test,但路由只定义了/test,就会出现匹配失败。
  • 检查生产环境是否开启了大小写敏感路由app.set('case sensitive routing', true),如果访问的是/Test大写开头的路径也会返回404。

4 确认请求是否真正到达Node服务

如果你用pm2等进程管理工具托管Node服务,执行pm2 logs查看运行日志,访问/test时如果日志里没有对应的请求记录,就可以100%确定请求被上层反向代理拦截,重点排查第二步的代理配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:09:03