通过 Apache 反向代理 Node.js 有意义吗?

通过 Apache 反向代理 Node.js 有意义吗?

从性能角度来看,将请求从 Apache VirtualHost 重定向到 Node.js 实例是否有意义?代理是否会抵消出色的 Node.js 性能?


供参考:我还需要在同一台机器上解析和运行几个 PHP Web 应用程序,这就是我考虑使用反向代理的唯一原因。

根据我的研究,Nginx 的开销较少,因此性能略好,但不幸的是不支持 HTTP/1.1。

我也考虑过让 Node.js 充当反向代理并向 Apache 发送某些请求(然后处理 PHP 文件),但我听说可能会存在很多安全问题。

答案1

我认为将 Apache 设置为 Node.js 的反向代理违背了 Node.js 的初衷。Node 非常轻量级 - 其开销极小。启动 apache 进程来处理 Node.js 流会破坏使用 Node.js 的意义(本质上,您会受到 Apache 性能的限制)。

Node 有时被认为不够稳定,无法在没有监控的情况下运行,可能不是理想的前端。我建议将 Squid 或 HAproxy 放在 Node 和 Apache 前面,允许其中任何一个作为您的代理,并在不同的端口(例如 8080、8081)上运行 Node 和 Apache。Squid 和 HAProxy 都具有良好的性能,应该可以满足您的需求,而不会影响任何后端服务器。

答案2

您不应该使用Apache进行代理node.jsnode的速度部分来自于以最小的开销处理自己的套接字 I/O:使用任何其他服务器进行代理都会抵消这一点。

相反,你可以Apache使用node优秀的代理请求node-http-proxynodejitsu- 第二个示例“使用自定义服务器逻辑设置独立代理服务器”适合您的用例。

编辑:我实际上前几天使用并设置了一个PHP/安装,有完整的说明nodenginxphp-fpm这里。您还可以运行反向代理nginx并允许node同时处理其自己的连接。

相关内容