2013-05-21 97 views
9

此前運行的Node.js和Apache的技術方面,我問的程序員StackExchange一個問題:Is it bad practice to run Node.js and apache in parallel?在今天並行

我的最終應用程序可以被認爲是一個社交網絡中,我希望有一個聊天功能和一個正常的狀態更新功能。

對於聊天功能,我想使用Node.js,因爲我想將數據從服務器推送到客戶端,而不是頻繁輪詢服務器。對於狀態更新,我想要一個正常的apache和PHP安裝,因爲我更熟悉這一點,並不明白爲什麼我會使用Node.js。

但是,這意味着我不得不同時運行Node.js和apache。雖然這是可能的,而不是被認爲是不好的做法根據對Programmers.SE答案,我也看到了一些技術問題:

  • 我需要兩個端口開放 - 能給與開放網絡的問題,唐「T有開放的所有端口

  • 我不能用我的共享服務器,因爲我不能打開一個端口,在那裏,所以我不得不買了VPS

我不對第二個不在乎太多,關於第一個。那麼真的沒有解決方案可以在一個端口上結合這兩種功能嗎?

還是有一些端口的解決方法?我可以,例如,重定向subdomain.domain.com:80domain.com:x其中x是Node.js的端口嗎?這是可能的,並解決我的問題?該解決方案在this Programmers.SE answer中給出,但我將如何執行它?

回答

2

作爲@TheHippo說你可以用Apache的mod_proxy做到這一點。

nGinx但是,如果您使用FastCGI運行PHP> = 5.4,可能會更快地運行。 nGinx也是比apache更好的轉發代理,它的基於事件的模型符合Node的基於事件的I/O。通過propper設置,這可能意味着更好的整體性能。

如果您處於受限制的環境(如共享服務器或無法更改Web服務器),那麼您應該使用Apache和mod_proxy。

+0

我們如何在nginx服務器上運行php然後@Borslav Sabev? –

3

你可以通過Apache代理所有的請求到node.js(使用mod_proxy),所以你不會有任何麻煩將多個開放的端口。這也允許將所有內容重新映射到子文件夾或子域。

這在性能方面並不是最好的解決方案,但是如果你在共享的網絡空間上,這並不重要。 (共享服務器通常非常慢,如果你有更大的用戶羣,你需要遲早要移到單獨的服務器上。)

+0

感謝您的回答!我不允許在我的共享服務器上打開任何端口,甚至不是實習生,所以這是不可能的(Node.js提供了一些錯誤,不記得是什麼)。但我真的不打算購買VPS。你說它在性能方面不是最好的解決方案,那麼會更好? :)還是有沒有更好的可能,除了不同的端口? – Keelan

+0

如果你通過Apache進行代理,你將在技術上減少node.js事件循環的大部分好處。如果你購買VPS可以使用nginx。 – TheHippo

+0

好吧!所以這將是一個更好的選擇;你能詳細說明怎麼做(或者鏈接也可以)? – Keelan