簡體   English   中英

基於 AWS Application Load Balancer (ALB) 路徑的路由未按預期運行

[英]AWS Application Load Balancer (ALB) path based routing not functioning as expected

我正在研究一個 POC,以證明基於 AWS 路徑的路由通過應用程序負載均衡器到一組使用 express 的非常基本的“hello world”node.js 應用程序。 如果沒有基於路徑的路由並且有多個偵聽器,每個應用程序有 1 個偵聽器,每個相應的偵聽器和應用程序都按預期工作。 因此,目標組內的目標均已通過健康檢查並顯示為健康。 但是,當我在其中一個偵聽器(刪除另一個不必要的偵聽器)上切換到基於路徑的路由實現時,我收到兩個應用程序的以下錯誤:

無法獲取 /expressapp
無法獲取 /expressapp2

聽眾規則

我已經通過以下文檔試圖找出問題: http : //docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#path-conditions

我錯過了什么? 任何故障排除想法?

我相信您收到此錯誤是因為相關服務不希望收到以/expressapp/expressapp2為前綴的路徑。 當 ALB 將流量轉發到您的服務時,路徑保持不變。

ALB 無法處理剝離前綴。 如果您無權訪問應用程序的源代碼,則需要使用某種反向代理(如 nginx)來重寫 URL,然后再將它們發送到應用程序。

如果您可以訪問源代碼,express 支持在不修改代碼的情況下更改基本 url 您可以將 url 前綴的值作為環境變量讀取,並相應地配置您各自的服務環境。

我會從它們各自的位置翻轉這兩個規則,即讓 expressapp2 規則 #1 和 express app 規則 #2 讓它像你想要的那樣工作。

ALB 按優先級順序評估這些規則,即使上下文路徑是 expressapp2,它仍與 expressapp 匹配,並且會評估第一個規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM