node.js apache虚拟主机configuration

我的服务器名称如下所示:servername.myhostingcompany.com。 当我运行示例node.js应用程序时,当我转到servername.myhostingcompany.com:8124时,可以看到hello world消息。

我不想使用服务器的主机名。

如何让node.js在不同的虚拟主机上运行和监听(例如chat.mydomain.com:8124或www.mydomain.com:8124)? 我认为这可以设置在Apacheconfiguration?

如果apache服务器没有监听端口8124,那么我认为它不需要对你的apacheconfiguration做任何事情。 来自node.js文档:

server.listen(port,[hostname],[callback])

开始接受指定端口和主机名的连接。 如果主机名被省略,服务器将接受指向任何IPv4地址(INADDR_ANY)的连接。

您的示例node.js应用程序可能已省略hostname参数,因此现在正在端口8124下提供每个可用的主机名。

在Node API文档中,我认为“主机名”实际上是错误的术语。 他们真的是指IP地址。 如果您在具有单个IP地址的服务器上使用虚拟主机名(例如,典型的VPS),则仍然会在两个主机名上得到响应。

因此,在server.listen上设置主机名将不会为您工作,除非您有多个IP地址,并且可以将子域分配给其中的一个。

我认为你有两个select来做这个工作。

第一个是限制Node只监听本地主机(内部),并使用反向代理来处理传入的请求。 代理会将请求转发给内部节点侦听器。 这并不总是完全可靠的,因为反向代理对图像文件等静态资源可能比较挑剔。 另外,大多数反向代理都是“阻塞”的,所以可能会取消使用Node的好处。 也可以使用具有http代理库的Node来执行代理。

第二种方法是使用一些中间件来处理VHOST。 快速通常用于此,虽然实际上是由您可以直接使用连接中间件库提供的function。 请参阅: https : //github.com/visionmedia/express/tree/master/examples/vhost