2012-07-12 54 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(因为它可以执行重写等操作)。

相关问题