如何适当地反向代理 nodejs 子路由?
How to appropriately reverse-proxy nodejs subroutes?
我也是 nodejs 和 nginx 的新手。所以我想做的是 nginx 中的反向代理节点。我能够这样做,但我从 nodejs 的后续路由没有得到反向代理。
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 我看到 'index'。但是当我点击上传按钮时,我需要去 /upload of nodejs app 但它去 mydomain.com/upload 不存在。
如果有人能指导我正确的方向,那就太好了。
我认为问题出在html。
您当前的 html 可能有类似
<a href="/upload">upload</a>
制作所有链接 "relative" 应该可以解决您的问题
<a href="./upload">upload</a>
以 /
开头的链接将相对于域,而以 ./
开头的链接将相对于当前目录 (nodeAdmin
)。
我也是 nodejs 和 nginx 的新手。所以我想做的是 nginx 中的反向代理节点。我能够这样做,但我从 nodejs 的后续路由没有得到反向代理。
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 我看到 'index'。但是当我点击上传按钮时,我需要去 /upload of nodejs app 但它去 mydomain.com/upload 不存在。
如果有人能指导我正确的方向,那就太好了。
我认为问题出在html。
您当前的 html 可能有类似
<a href="/upload">upload</a>
制作所有链接 "relative" 应该可以解决您的问题
<a href="./upload">upload</a>
以 /
开头的链接将相对于域,而以 ./
开头的链接将相对于当前目录 (nodeAdmin
)。