是的,你的理解基本正確:當請求到達APISIX時,它會先根據請求的URI、Host、請求方法、 headers等信息匹配最合適的路由,然后執行路由關聯的插件邏輯,最后轉發到路由配置的上游服務。下面詳細講解APISIX處理請求的全鏈路及可能的情況。
一、請求全鏈路流程
APISIX處理請求的完整鏈路可分為7個核心階段,每個階段都有明確的職責和可能的分支邏輯:
1. 接收請求
- 觸發條件:客戶端(如瀏覽器、curl、應用程序)通過APISIX的監聽端口(默認9080,HTTPS默認9443)發送HTTP/HTTPS請求。
- 核心操作:
- 解析請求的基本信息:HTTP方法(GET/POST等)、URI(如
/ip
)、協議版本(HTTP/1.1/2)、請求頭(Headers,如Host、Cookie、Authorization)、請求體(Body)等。 - 記錄請求的源IP、端口、到達時間等元數據。
- 解析請求的基本信息:HTTP方法(GET/POST等)、URI(如
- 可能的異常:
- 請求格式錯誤(如無效的HTTP協議):APISIX直接返回
400 Bad Request
。 - 連接超時:客戶端與APISIX的TCP連接未在超時時間內完成請求發送,APISIX主動斷開連接。
- 請求格式錯誤(如無效的HTTP協議):APISIX直接返回
2. 路由匹配(核心階段)
- 觸發條件:請求解析完成后,APISIX進入路由匹配階段,目的是找到與當前請求匹配的路由配置。
- 核心邏輯:
- 遍歷所有啟用狀態(status: 1) 的路由,根據路由配置的匹配規則(
uri
、host
、methods
、params
、headers
等)進行匹配。 - 匹配優先級:精確匹配(如
uri: "/ip"
) > 前綴匹配(如uri: "/api/*"
) > 正則匹配(如uri: "/user/(\d+)"
);若多個路由匹配,按路由的
- 遍歷所有啟用狀態(status: 1) 的路由,根據路由配置的匹配規則(