在進一步討論之前,有必要簡要說明 Kong 是如何構建的,特別是它是如何與 Nginx 集成的,以及 Lua 與它有什么關系。
在 Nginx 中,lua-nginx-module 模塊支持 Lua 腳本功能。Kong 沒有使用這個模塊編譯 Nginx,而是與 OpenResty 一起發布,OpenResty 已經包含了 lua-nginx-module 模塊。OpenResty 不是Nginx的分支,而是擴展其功能的一組模塊。
因此,Kong 是一個 Lua 應用程序,旨在加載和執行 Lua 模塊(我們通常將其稱為“插件”),並為它們提供一個完整的開發環境,包括SDK、數據庫抽象、遷移等等。
插件由Lua模塊組成,這些模塊通過插件開發工具包(或“PDK”)與請求/響應對象或流交互,以實現任意邏輯。PDK 是一組 Lua 函數,插件可以使用這些函數促進插件與 Kong 的核心(或其他組件)之間的交互。
本指南將詳細探討插件的結構、它們可以擴展什么以及如何分發和安裝它們。有關 PDK 的完整參考資料是 Plugin Development Kit 。