我有一个服务器,其中包含我的API和我的应用程序。
/
-返回我的申请
/api
-每个请求都以该前置词api
开头,例如/api/users
,依此类推。
我的问题:当我不是直接通过example.com
进入应用程序时,例如example.com/users
甚至是一些随机词,例如example.com/stackOverflow
都会返回API响应!我的应用甚至无法启动,响应就像Cannot GET /stackOverflow
我想这是因为它在一个单一服务器上...是否有某种方法可以在节点中对其进行修复?
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);
});
});
答案 0 :(得分:1)
您可以创建不同的子域,而不必仅更改URI而使用相同的域。
然后使用nginx / apache上的反向代理配置,您可以将请求重定向到其他服务器端口。这样,可以让您的应用程序在端口80上运行,而NodeJS API在端口3000上运行。
示例:
APP.domain.com重定向到localhost:80
API.domain.com重定向到localhost:3000
我希望我能说清楚。
您还可以使用不需要在不同端口上运行它们的结构来执行此操作。 以下是一些有关如何在nginx上进行配置的文档:
https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/