我可以从同一台服务器为PHP和Node应用程序提供服务,但使用不同的互联网域吗


Can I serve both PHP and Node apps from the same server but with different internet domains?

我拥有一个只有一个IP地址的Debian服务器,用于我所有的个人项目。如果可能的话,我想做的是从同一台服务器上为我的Wordpress和Node.js应用程序提供服务,为每个应用程序使用不同的域名

例如

  • www.myblog.org:80应为wordpress/index.php服务
  • my_app.com:80应在localhost:3000处为节点实例提供服务
  • my_other_node_app.com:80应在localhost:3001处为节点实例提供服务等等

这件事有可能吗?如果这就是所需要的,我不介意停止使用apache

只有一个软件可以监听给定网络接口的给定端口。

例如,如果您有两个具有不同IP地址的以太网适配器,那么您可以将Node服务器配置为在其中一个适配器上侦听端口80,将Apache服务器配置为侦听另一个适配器的端口80,然后设置DNS以将不同域指向不同的IP地址。

如果你只有一个ip地址,那么你就必须在不同的端口上运行服务器。

您可以在端口80上运行Apache,然后使用它代理到节点的请求。

您可以使用反向代理服务器(如nginx)在多个域上提供服务。

请在此处查看此问题:同一IP 上的Nginx不同域

但基本思想是,一台服务器实际上在端口80上侦听,并处理将请求发送到内部服务机器(localhost:8000)上的正确应用服务器(php、node等)。

从技术上讲,这并不难做到,但习惯于配置像nginx这样的新软件可能有点挑战。当然绝对可行!

通过使用Web服务器或代理,这肯定是可能的。这里最常见的工具是Nginx,因为它既是一个Web服务器又是一个保留代理。然后,您可以让Nginx监听端口80,并将一个域指向PHP文档根,将另一个域直接指向Node Web服务器,例如,该服务器将在端口8000上运行。

另一种选择是使用HAProxy和一个单独的PHP Web服务器。HAProxy和Nginx一样速度极快。如果你决定运行负载均衡器,那么让代理websocket成为可能就有点低级了。就目前而言,这其实并不重要。