Node.js-同一服务器上的API和应用程序问题

时间:2018-08-30 22:13:19

标签: javascript node.js

我有一个服务器,其中包含我的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);
    });
});

1 个答案:

答案 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/