PHP和node.js可以在同一台服务器上运行吗?

2022-08-30 23:03:38

我有一个在后端使用Apache和PHP的Web应用程序。我正在通过许多新功能来增强这一点,并考虑使用node.js进行新工作。

首先,PHP和node.js可以共存于同一台机器上吗?我不明白为什么不这样做。其次,我可以直接从Javascript调用node.js代码并返回JSON吗?


答案 1

是的,是的。Node和Apache / PHP可以在单个服务器上共存。

您可能遇到的唯一问题是它们无法同时侦听同一端口。默认情况下,HTTP 在端口 80 上运行,任何时候只有一个进程可以“侦听”单个端口。因此,您可能必须在其他端口(例如,8080)上运行 Node 应用程序,如果任何目标用户仅限于端口 80,这可能会带来困难。


答案 2

您可以在同一台服务器上运行 node 和 PHP,甚至可以在同一端口上运行。关键是使用像nginx这样的服务器在端口80上侦听,像往常一样在Nginx中设置PHP(使用php-fpm),并将Node实例设置为在8081等高端口上进行本地侦听。

然后只需配置nginx,使用目录名称作为过滤器将所有Node请求代理到localhost:8081。你基本上设置了nginx来对待Node请求,就像它对待PHP请求一样:它把它们转发给其他守护进程,然后在它回来时处理响应。Nginx在这方面做得很好。它将增加一层安全性,并将提高性能,因为它非常擅长同时管理许多连接,即使后端不这样做。

这样做的另一个好处是,您也可以在不同的域上拥有多个单独的Node实例,并使用常规的nginx规则来处理所有实例。您还可以将其与其他应用程序服务器(如用 Go 编写的应用程序)一起运行。

您将受益于Nginx的可配置性,其SSL和HTTP / 2支持以及提供静态文件的巨大速度,而不必从Node应用程序提供静态文件(如果您不想的话)。


推荐