[英]Express creating 404 error on non-index route with nginx proxy but not on local
我有一个快速服务器来处理我的路由,并且正在使用 nginx 来代理我的请求。 但是,当访问不是'/'
的路由时,我收到来自 express 的 404 错误。 到目前为止,我已经查看了很多其他答案,它们似乎都是来自 nginx 的 404,并通过删除try_files $uri $uri/ =404;
来解决。 ,但对我来说不是这样。 我还看到很多关于使用 express/nginx 的 static 文件的 404-ing 的问题,但我认为这里不一定是这种情况。 相反,我不确定我的情况与这些问题有何关系,因为我正在通过 pug 和 express 进行模板化。
我得到的错误是:
NotFoundError: Not Found
at /root/my-app/app.js:27:10
at Layer.handle [as handle_request] (/root/my-app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/root/my-app/node_modules/express/lib/router/index.js:317:13)
at /root/my-app/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/root/my-app/node_modules/express/lib/router/index.js:335:12)
at next (/root/my-app/node_modules/express/lib/router/index.js:275:10)
at /root/my-app/node_modules/express/lib/router/index.js:635:15
at next (/root/my-app/node_modules/express/lib/router/index.js:260:14)
at Function.handle (/root/my-app/node_modules/express/lib/router/index.js:174:3)
at router (/root/my-app/node_modules/express/lib/router/index.js:47:12)
由(在 app.js 中)触发:
app.use((req, res, next) => {
next(createError(404));
});
我的路由器看起来像:
router.get('/', (req, res) => {
res.render('index'); // does not give me 404 error
});
router.get('/other-route', (req, res) => {
res.render('other-route-pug-file'); // gives me 404 error
});
我的 nginx 配置看起来像:
server {
listen 80;
server_name example.com;
rewrite ^/(.*) https://example.com/$1 permanent;
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
# ssl config details
server_name example.com www.example.com;
location / {
proxy_pass http://localhost:3000; # the port that my express server is listening to
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;
}
}
因此,仅当我通过 nginx 将我的应用程序路由到我的域时,才会出现此错误。 在 localhost 我可以看到/other-route
很好。 我也只是不确定如何 go 来调试这样的事情,因为我真的不能很容易地将console.log()
到某个地方,而且我对通过 nginx 代理还是很陌生,所以在任何一个领域/解决这个问题的任何帮助都是非常感激。 谢谢!
我解决了我的问题。 我正在使用一种低效的方法在服务器和 github 上同步我的代码。 在我第一次克隆它之后,我没有在我的目录中yarn install
。 我不知道为什么我不只是拉入服务器上的目录。 我不一定确定为什么我的项目的其他部分正在工作,但这对我来说是固定的。 谢谢您的帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.