如何使用相同的端口服务不同的node.js应用程序?

我有一个网站托pipe我的开发项目。 每个项目都是一个node.js文件。 问题是我只能在同一时间在网上有一个项目 – 除非我把他们放在不同的端口。 但是,假设我想发布2个这样的项目: my_site.com/foo ,其中第一个由“foo.js”pipe理,第二个由“bar.js”pipe理。 我怎样才能做到这一点?

你需要在前面的代理。 您为每个单独的节点分配一个不同的端口。 代理将端口80上的通信转发到适当的后端节点进程。

这可以通过node-http-proxy( https://github.com/nodejitsu/node-http-proxy )或任何Web服务器来完成。 Nginx和lighttpd使它变得非常容易,Apache不那么依赖,但仍然是完全可行的。

设置一个Nginx进程来逆向代理到你的Node进程。 Nginx进程将保持该端口,并将my_site.com/foo请求发送到node foo.js后端进程,并将my_site.com/bar请求发送到node bar.js后端进程。

这样,您的Node进程保持完全独立,如果其中一个服务器变得stream行,可以很容易地将其分离到不同的服务器。

如果你使用快递/连接,你可以使用一些东西

 var bar = require("./bar"), foo = require("./foo"); app.use(express.vhost("my_site.com/bar", bar)); app.use(express.vhost("my_site.com/foo", foo)); 

是一个单独的文件。

注意:未testing