1

我有一个带有 CentOS 和 Apache 服务器的 VPS 服务器。

但我也想运行我的 node.js 应用程序。我正在使用sails.js 这个sails 应用程序正在尝试监听指定主机的80 端口。

这是错误(在风帆升降机运行后):

debug: Starting server in /var/www/user/data/nodeprojects/projectname...  
info  - socket.io started
debug: Restricting access to host: projectname.com  
warn  - error raised: Error: listen EADDRINUSE
warn:   
warn: Server doesn't seem to be starting.  
warn: Perhaps something else is already running on port 80 with hostname projectname.com?

问题是什么?我可以在具有一个端口(80)的一台服务器上同时运行 apache 和 nodejs 服务器吗?

4

2 回答 2

3

你不能。

当服务器进程打开一个 TCP 端口来响应请求时,它会独占使用该端口。因此,您不能在同一端口上同时运行 SailsJS 和 Apache 服务器。

话虽如此,您可以使用 Apache 做很多有趣的事情,例如将特定请求代理到运行在不同端口上的其他服务器。

典型的设置将 Apache 在端口 80 上,SailsJS 在端口 8000(或其他可用端口)上,其中 Apache 将请求转发到某些 URL 到 SailsJS,然后将来自 SailsJS 的回复转发回浏览器。

有关此方法的示例实现,请参阅在 Mountain Lion 代理上配置 Apache 到 Node.jshttp://thatextramile.be/blog/2012/01/hosting-a-node-js-site-through-apache

于 2013-07-07T19:26:07.533 回答
0

您不能将相同的端口用于不同的应用程序。NodeJS 可以使用任何开放的端口。您需要为您的应用程序进行端口转发。:)

于 2013-07-08T02:59:48.490 回答