Amazon-Ec2

彈性負載均衡器不適用於執行 Node.js 的 8000 埠

  • December 9, 2016

我擁有一個執行 PHP 和 Node.js socket.io(顯示腳本)。但是,我想為此實例設置一個彈性負載均衡器(僅用於測試,因為稍後我會將它與 Auto Scaling 一起使用),因此我使用以下設置創建了目標組:www.mydomain.com``www.mydomain.com:8000/socket.io/socket.io.js``socket.io

在此處輸入圖像描述

之後,我在 Target Group 中註冊了該實例,並且狀態檢查執行良好:

在此處輸入圖像描述

因此,在我的負載均衡器(Application Load Balancer 而不是 Classic Load Balancer)中,我添加了以下偵聽器(如果我刪除 8000 偵聽器,當我訪問DNS:8000DNS:8000/socket.io/socket.io.js不顯示任何內容時,僅顯示錯誤ERR_CONNECTION_REFUSED):

在此處輸入圖像描述

在此負載均衡器的安全組中,我還添加了埠 80 和 8000:

在此處輸入圖像描述

因此,當訪問負載均衡器的 DNS 名稱時,它通常會顯示網站,但是,如果我嘗試訪問DNS:8000/socket.io/socket.io.js它,它會重寫 URLDNS:8000並繼續顯示網站,而不是socket.io腳本。我已經嘗試將路徑模式添加/socket.io/*到 8000 偵聽器,但它繼續以相同的方式。那麼,我該怎麼做才能顯示socket.io腳本?

您有一個目標組指向您的實例上的埠 80。您已將該目標組附加到兩個偵聽器。

相反,您需要兩個目標組分別註冊您的實例,一個以 8000 為目標,另一個以 80 為目標。然後,您需要將這些目標組分別附加到 80 和 8000 偵聽器。

引用自:https://serverfault.com/questions/819706