簡體   English   中英

當我更改路徑時,基於 AWS ALB 目標組路徑的路由不起作用

[英]AWS ALB target group path based routing not working when I change the path

編輯

我發現在/cms下添加到節點應用程序的路由似乎可以解決問題,但是,如何將/作為默認值。 這似乎是令人討厭的行為

結束編輯

我有一個運行一個任務的 ECS 集群,它由一個目標組拾取,並且在 ALB 上,我在/上路由到該目標組,如下所示:

在此處輸入圖像描述

然后,當我從 ALB 中抓取 DNS 並點擊 url 時,它工作正常,我得到:

{"name":"DEMO"}

我希望僅當用戶點擊/cms時才路由此服務,所以我在偵聽器中更改了它,如下所示:

在此處輸入圖像描述

然而,一旦更新,我點擊 url + /cms我得到:

Cannot GET /cms

我不知道為什么。 這是一個超級基本的節點快遞應用程序,索引如下:

const express = require('express')
const app = express()
const port = 80

app.get('/', (req, res) => {
    let data = {
        name: "DEMO"
    }
    res.json(data);
})

app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`)
})

HTTP 請求是:

http://yourdomen/[path]/[subpath]

其中: [path] - 是/cms還是/

有負載均衡器轉發行為:

  • 如果負載均衡器得到http://yourdomen/ ,它通過http://yourdomen/到快遞(不是/
  • 如果負載均衡器得到http://yourdomen/cms ,它也會將“http://yourdomen/cms”傳遞給 Express 而不做任何更改(不是/cms
  • 如果負載均衡器得到http://yourdomen/cms/[subpath] ,它通過http://yourdomen/cms/[subpath]不是/cms/[subpath]

負載均衡器不能在“轉發到”操作中僅將subpath部分傳遞給 Express。 如果您想在將請求傳遞給 Express 之前更改負載均衡器,則應使用“重定向到”操作

注意您可以在重定向規則中使用 ECS 集群私有 DNS 作為主機,那么您將不需要目標組

重定向示例:

負載均衡器獲取http://yourdomen/cms/[subpath]並將請求的路由更改為http://dummycmsdomen/[subpath]並將此更新的路由重定向到 Express。 在這種情況下,Express 將獲得http://yourdomen/[path]模式,並在您的場景中正常工作

版本部分答案:

  • 如果您發送http://yourdomen/那么 Express 應該使用/路徑
  • 如果您發送http://yourdomen/cms那么 Express 應該與/cms路徑一起使用

因此,在您編輯代碼 Express 應用程序之前,它正在等待/路徑,但它得到/cms並且應該返回 GET-error。 在您添加了相應的指令來處理/cms路徑后,應用程序就可以工作了

暫無
暫無

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

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