弹性负载均衡器无法在运行 Node.js 的 8000 端口上运行

弹性负载均衡器无法在运行 Node.js 的 8000 端口上运行

我拥有一个运行 PHP 和 Node.js ( ) 的 EC2 实例socket.io,为了允许访问,我释放了端口 80 (Apache) 和 8000 (Node),一切正常(如果我访问,www.mydomain.com网站会正常显示,如果我访问,www.mydomain.com:8000/socket.io/socket.io.js脚本socket.io也会显示)。但是,我想为这个实例设置一个 Elastic Load Balancer(仅用于测试,因为稍后我将与 Auto Scaling 一起使用它),因此我使用以下设置创建了目标组:

在此处输入图片描述

之后,我在目标组中注册了该实例,并且状态检查运行正常:

在此处输入图片描述

因此,在我的负载均衡器(应用程序负载均衡器而不是经典负载均衡器)中,我添加了以下侦听器(如果我删除 8000 个侦听器,则当我访问时DNS:8000或未DNS:8000/socket.io/socket.io.js显示任何内容时,只有错误ERR_CONNECTION_REFUSED):

在此处输入图片描述

并且在这个负载均衡器的安全组中我还添加了端口 80 和 8000:

在此处输入图片描述

因此,当访问负载均衡器的 DNS 名称时,它通常会显示网站,但是,如果我尝试访问,DNS:8000/socket.io/socket.io.js它会将 URL 重写为DNS:8000并继续显示网站,而不是脚本socket.io。我已经尝试将路径模式添加/socket.io/*到 8000 侦听器,但它仍以相同的方式继续。那么,我该怎么做才能显示脚本socket.io

答案1

您有一个目标组指向实例上的端口 80。您已将该目标组附加到两个侦听器。

相反,您需要两个分别注册您的实例的目标组,一个针对 8000,另一个针对 80。然后,您将分别将这些目标组附加到 80 和 8000 个侦听器。

相关内容