2013-04-29 42 views
1

我有一個網站託管我的開發項目。每個項目都是一個node.js文件。問題是我只能同時在線1個項目 - 除非我將它們託管在不同的端口中。但假設我想發佈2個這樣的項目:my_site.com/foo,my_site.com/bar,其中第一個由「foo.js」管理,第二個由「bar.js」管理。我怎樣才能做到這一點?如何使用相同的端口提供不同的node.js應用程序?

+0

也許讀http://stackoverflow.com/questions/10216003/how-to-make-node-js-multi-tenant-for-websites-on- port-80?rq = 1可以給你一個幫助,或者一個起點,但是.. – Ragnarokkr 2013-04-29 01:01:43

回答

1

設置Nginx進程以將代理逆向轉換爲您的Node進程。 Nginx進程將保持該端口,並將my_site.com/foo的請求發送到node foo.js後端進程,並將my_site.com/bar的請求發送到node bar.js後端進程。

通過這種方式,您的節點進程保持完全獨立,並且如果其中一臺服務器變得流行,可以在以後輕鬆分離到不同的服務器。

2

你需要一個代理前面。您爲每個單獨的節點分配一個不同的端口。代理將端口80上的流量轉發到適當的後端節點進程。

這可以通過node-http-proxy(https://github.com/nodejitsu/node-http-proxy)或任何Web服務器來完成。 Nginx和lighttpd使它變得非常容易,Apache不那麼容易,但仍然完全可行。

+0

這幾乎是完美的,但是接下來我將不得不在不同的端口上創建這些進程。這有點令人困惑,因爲如果我想單獨運行「foo.js」(比如說,我把它賣給了某人),我就不能僅僅使用「node foo.js」。 – MaiaVictor 2013-04-29 01:16:05

+2

它不是一個幾乎完美的問題,它是唯一的方法。您不能在同一端口上運行多個進程。它是一個低級系統的東西。 – Geuis 2013-04-29 01:24:45

+0

除了答案。如果你想稍後將它分開,你仍然可以自己運行foo,並使端口可配置(如果它不是現在)。 – TheHippo 2013-04-29 04:20:27

0

如果使用快遞/連接,你可以沿着

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)); 

線使用的東西,是一個獨立的文件。

注:未測試

相關問題