PHP 和 node.js 在同一台服务器上

Posted

技术标签:

【中文标题】PHP 和 node.js 在同一台服务器上【英文标题】:PHP and node.js on the same server 【发布时间】:2021-11-20 00:05:12 【问题描述】:

我正在使用 php 作为我网站的后端,并且我正在引入一个 node.js 聊天。就两者之间的身份验证而言,我已经弄清楚了一切,我现在唯一的问题是在端口号之间切换。这是如何处理的?理想情况下,我想隐藏端口号,并且为此尝试了虚拟主机,但是无论我如何配置虚拟主机,服务器都不会加载并且似乎已关闭。如果这很重要,我正在使用 cloudflare。但不需要隐藏端口。我只想从端口 443 上的 PHP 应用程序顺利链接到端口 2053 上的聊天应用程序,并将聊天应用程序链接回 PHP 站点。 PHP 使用 Apache。我找不到任何简单的方法来做到这一点。几天来一直在这个问题上。

【问题讨论】:

您的前端服务器使用什么? Apache 和 php 在端口 443 上。我只想创建一个指向 2053 端口的链接,它会加载一个 php 页面。该页面上的链接设置为 2053,但我希望它们返回 443。 【参考方案1】:

经过大量研究、反复试验,我已经弄清楚了一些事情。

我的网站主要由 PHP 组成,我想在单独的页面上使用 node.js 作为聊天应用程序。我以为这很容易,但我错了。让 node.js 和 PHP 完美地协同工作是一件很痛苦的事,如果我当时知道我现在所知道的,我可能会走另一条路。但我大部分时间都在工作,我很高兴。

一些有用的信息:

如果您想从节点页面链接回 80 或 443,请使用带有 http/s 的完整 URL。

如果您想使用虚拟主机,则只能在 Apache 2.4+ 上使用,因为如果没有一些允许 websocket 代理的 apache mods,socket.io 无法通过它进行通信。据我所知,nginx 也有可能,但我对它不太熟悉。

所以最后我只是保留端口号并允许两者之间的超链接。在我升级到 Apache 2.4 或 NGINX 之前,这是一个临时解决方案。

【讨论】:

以上是关于PHP 和 node.js 在同一台服务器上的主要内容,如果未能解决你的问题,请参考以下文章

Bot Emulator 连接到另一台机器上的 Node.js 服务

node.js mysql错误:ECONNREFUSED

在具有多个域的同一服务器上托管 PHP 和 Node.js 应用程序

本地网络上的 Socket.io/node.js?

如何在同一个项目Node.js中将一个GAE服务列入另一个白名单

使用Node.js 的优势和劣势有哪些