node.js - 如何正确反向代理nodejs子路由?

标签 node.js express nginx reverse-proxy

我也是 Nodejs 和 nginx 的新手。所以我想做的是nginx中的反向代理 Node 。我可以这样做,但我的后续来自 Node.js 的路由不会被反向代理。

app.get('/', (req, res) => {
    res.render('index');
});

app.post('/upload', (req, res) => {
    upload(req, res, (err) => {
        console.log(req.file);
        res.render('index' , {
            msg: 'File Uploaded!',
            file : `uploads/${req.file.filename}`
        }); 
    });
});

这是基本代码。 '/' 具有带按钮的索引页。当您单击该按钮时,它会转到“/上传”。

它无需反向代理即可工作。 我的反向代理配置如下。

location /nodeAdmin/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_redirect off;
    proxy_buffering off;
    proxy_pass http://127.0.0.1:8080/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_cache_bypass $http_upgrade;
}

现在,当我访问 mydomain.com/nodeAdmin 时,我会看到“索引”。但是当我点击上传按钮时,我需要转到nodejs应用程序的/upload,但它转到不存在的mydomain.com/upload。

如果有人能引导我走向正确的方向,那就太好了。

最佳答案

我认为问题出在 html 上。

您当前的 html 可能有类似的内容

<a href="/upload">upload</a>

使所有链接“相对”应该可以解决您的问题

<a href="./upload">upload</a>

/ 开头的链接将相对于域,而以 ./ 开头的链接将相对于当前目录 (nodeAdmin)。

关于node.js - 如何正确反向代理nodejs子路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48896622/

相关文章:

node.js - 是否有基于 Node.js 的替代 Puppet 或 Chef?

node.js - twitter request_token 端点总是返回 "couldn' t 验证你”

javascript - 如何在express框架中创建模板标签(django)

JavaScript:在服务器端和客户端执行的 DOM 相关代码的最佳实践?

python - sagemaker 批量转换在读取上游时中断上游过早关闭的连接

nginx - Certbot/。众所周知/acme挑战

node.js - 使用 Rally API 获取排名属性

javascript - 使用归档器创建内存中的 .zip,然后将此文件发送到 Node 服务器上的 koa 客户端

express - Nestjs:@Session() 返回未定义

ssl - 如何正确代理 https 流量?