繁体   English   中英

使用 nginx 代理在非索引路由上快速创建 404 错误,但不在本地

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM