我拥有一个运行PHPandNode.js (socket.io)的Node.js实例,为了允许访问,我释放了端口80 (Apache)和8000 (Node),一切正常工作(如果我访问www.mydomain.com,网站通常会显示,如果我访问www.mydomain.com:8000/socket.io/socket.io.js,则显示socket.io脚本)。但是,我希望为这个实例设置一个弹性负载均衡器(只用于测试,因为稍后我将在自动缩放中使用它),因此我创建了具有以下设置的目标组:

之后,我在Target Group中注册了该实例,并且状态检查非常有效:

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

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

因此,当访问Load均衡器的DNS名称时,它通常会显示网站,但是,如果我试图访问DNS:8000/socket.io/socket.io.js,它会将URL重写到DNS:8000,并继续显示网站,而不是socket.io脚本。我已经尝试将路径模式/socket.io/*添加到8000个侦听器中,但它继续以同样的方式进行。那么,如何才能显示socket.io脚本呢?
发布于 2016-12-09 04:38:40
您有一个目标组,它指向实例的端口80。你已经把目标组和两个听众联系在一起了。
相反,您需要两个单独注册实例的目标组,一个以8000为目标,另一个为80。然后,您将分别将这些目标组附加到80和8000侦听器。
https://serverfault.com/questions/819706
复制相似问题