新聞

Web伺服器與反向代理NGINX釋出1.31.5版本,擴充開源版的請求路由能力,現在可在將請求交給後端服務前,先讀取JSON格式的HTTP請求內容,擷取指定欄位,再依內容選擇對應的後端服務,另外,新版也將原先提供給NGINX Plus的Control API帶入開源版。

過去NGINX收到HTTP請求後,會先讀取HTTP標頭並依網址路徑選擇處理規則,之後才讀取請求內容。對一般網站影響不大,但API、GraphQL或MCP服務可能讓不同操作共用/api、/graphql或/mcp等相同網址,光看網址無法知道使用者實際要求執行的操作。

NGINX 1.31.5新增client_body_early_read設定,可在比對處理規則前先讀取並暫存HTTP請求內容。新的JSON解析功能則能從內容擷取指定欄位,轉成NGINX可使用的變數,再交由location設定判斷請求去向,而location原本主要依網址路徑選擇處理方式,新版也能依變數結果決定要套用哪組規則。

以MCP服務為例,不同工具呼叫可能都送到同一個/mcp網址,NGINX現在可先讀取JSON中的方法或工具名稱,再把不同操作交給不同後端服務,也能在請求送到應用程式前,依內容套用流量限制或拒絕不符合規則的請求。之前如果要讓NGINX依HTTP請求內容做類似判斷,通常需要搭配njs等額外模組。

新版另一項更新是將Control API開放給NGINX開源版使用,管理員可透過API查詢目前執行中的NGINX行程與組態,也能重新載入設定並直接取得JSON格式的執行結果。過去修改設定後,通常要透過指令或UNIX訊號要求NGINX重新載入,再查看錯誤紀錄確認設定是否成功套用。

NGINX提醒,Control API沒有內建身分驗證,不建議直接開放網路連線。官方建議讓Control API僅透過UNIX網域Socket存取,並透過檔案權限限制可存取的使用者。NGINX 1.31.5目前已提供原始碼及主要Linux發行版套件。