9

今天早些时候,我在 Programmers StackExchange 上问了一个问题:并行运行 Node.js 和 apache 是不好的做法吗?

我的最终应用程序可以被认为是一个社交网络,我希望在其中具有聊天功能和正常的状态更新功能。

对于聊天功能,我想使用 Node.js,因为我想将数据从服务器推送到客户端,而不是频繁地轮询服务器。对于状态更新,我想要一个正常的 apache 和 PHP 安装,因为我对此比较熟悉,不明白为什么我会为此使用 Node.js。

但是,这意味着我必须并行运行 Node.js 和 apache。虽然根据 Programmers.SE 的答案,这是可能的并且不被认为是不好的做法,但我确实看到了一些技术问题:

  • 我需要打开两个端口 - 可能会给未打开所有端口的开放网络带来问题

  • 我不能使用我的共享服务器,因为我不允许在那里打开一个端口,所以我必须购买一个 VPS

我不太关心第二个,更关心第一个。那么真的没有解决方案可以在一个端口上结合这两种功能吗?

或者端口有一些解决方法吗?例如,我可以重定向subdomain.domain.com:80到Node.js 的端口在domain.com:x哪里吗?x那有可能解决我的问题吗?这个 Programmers.SE answer给出了这个解决方案,但我将如何实施它?

4

2 回答 2

3

您可以通过 Apache 代理所有对 node.js 的请求(使用mod_proxy),因此您不会遇到多个开放端口的任何麻烦。这也允许将所有内容重新映射到子文件夹或子域。

这在性能方面不是最佳解决方案,但如果您在共享网络空间上,这并不重要。(共享服务器通常很慢,如果您获得更大的用户群,您迟早需要移动到单独的服务器。)

于 2013-05-21T16:39:38.283 回答
2

正如@TheHippo 所说,您可以使用 Apache 的 mod_proxy 来做到这一点。

然而, nGinx可能会运行得更快,尤其是当您使用 FastCGI 运行 PHP >= 5.4 时。nGinx 也是比 apache 更好的转发代理,它的基于事件的模型与 Node 的基于事件的 I/O 一致。通过适当的设置,这可能意味着更好的整体性能。

如果您处于受限环境中(例如共享服务器或无法更改网络服务器),那么您应该使用 Apache 和 mod_proxy。

于 2013-05-22T09:37:19.943 回答