2012-07-12 52 views
0

我目前有幾個應用程序運行在Apache反向代理之後。我這樣做是因爲我有多個服務器的公共IP地址。我使用VirtualHosts將正確的應用程序代理到正確的服務。例如:哪些反向代理適用於node.js socket.io應用程序?

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName nagios.myoffice.com 

    ProxyPass/http://nagios.myoffice.com/ 
    ProxyPassReverse/http://nagios.myoffice.com/ 
</VirtualHost> 

這適用於PHP,Django和Rails等應用程序,但我想開始試驗Node.js.

我已經注意到,在Apache代理之後的應用程序不能像我直接訪問它時那樣處理高負載。很可能是因爲Apache配置不理想(可能沒有足夠的同時連接)。

我想在node.js中嘗試的最酷功能之一是socket.io功能,恐怕會暴露出性能問題。特別是因爲,據我瞭解,socket.io將保持我的寶貴的少數阿帕奇連接不斷打開。

你可以建議一個反向代理服務器,我可以在這種情況下使用,這將允許我使用多個虛擬主機,並且不會扼殺node.js應用程序的性能,或妨礙socket.io實驗?

回答

1

我推薦node-http-proxy。非常活躍的社區並在生產中證明。

特點

  • 反向代理傳入http.ServerRequest流
  • 可作爲在一個node.js的模塊CommonJS的
  • 用途事件緩衝,以支持應用程序的延遲在代理請求
  • 反向或基於簡單JSON配置的正向代理
  • 支持WebSockets
  • 支持HTTPS
  • 最小請求開銷和功能測試
  • 通過生產使用作戰硬化@ [nodejitsu.com]延遲
  • 完整套件[0]
  • 在Javascript
  • 完全寫
  • 易於使用的API

使用以下命令安裝

npm install http-proxy 

這裏是Github頁面和NPM page

+0

嗨,謝謝你的提示。對我來說一個關鍵特性是虛擬主機功能,其中「站點a」轉到服務器x,「站點b」轉到服務器y。我在該文檔中看到提及「僅使用主機名」ProxyTable「的代理請求。這是相同的功能? https://github.com/nodejitsu/node-http-proxy/#proxy-requests-using-a-hostname-only-proxytable – newz2000 2012-07-12 18:03:42

+0

你當然可以這麼做! example1.com - > serverx:9000&example2.com - > servery:9000 – 2012-07-12 18:10:16

+0

謝謝,我今天會嘗試並回復我的成功! – newz2000 2012-07-12 18:27:05

0

雖然這引入了一種新的技術,我建議使用nginx的作爲前端。 nginx是一個用c語言編寫的快速和強化的服務器,它非常擅長反向代理。像節點一樣,它是事件驅動的並且是異步的。

您可以使用nginx將請求轉發到您正在運行的各個nodejs服務器,要麼是負載均衡,要麼取決於url(因爲它可以執行重寫等操作)。

相關問題