我有一个服务器,它保存我的 API 和我的应用程序。
/
- 返回我的申请
/api
- 每个请求都以该前缀 api
开头,例如/api/users
等等。
我的问题:当我不是直接通过 example.com
进入我的应用程序时,而是通过例如example.com/users
甚至一些随机单词,例如 example.com/stackOverflow
它会返回 API 响应!我的应用程序甚至无法启动,响应类似于 Cannot GET/stackOverflow
我猜这是因为它位于一台服务器上...有没有办法在 Node 中以某种方式修复它?
var app = expres();
app.get("/api/users", function (req, res) {
getUsers(function (err, users) {
if (err) {
return res.status(500).send('Error');
}
return res.json(users);
});
});
app.get("/api/user/:_id", function (req, res) {
getUserById(req.params._id, function (err, user) {
if (err) {
return res.status(500).send('Error');
}
return res.json(user);
});
});
最佳答案
您可以创建不同的子域,而不是使用仅更改 URI 的同一域。
然后通过 nginx/apache 上的反向代理配置,您可以将请求重定向到不同的服务器端口。这样,您的应用程序就可以在端口 80 上运行,NodeJS API 在端口 3000 上运行。
示例:
APP.domain.com redirects to localhost:80
API.domain.com redirects to localhost:3000
我希望我已经说清楚了。
您也可以使用您已经不需要在不同端口上运行它们的结构来做到这一点。 以下是一些有关如何在 nginx 上进行配置的文档:
https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
关于javascript - Nodejs - API 和应用程序位于同一服务器上的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52106042/