NGINX Unit 是用於各種 Web 應用程式的輕量動態開源伺服器。NGINX Unit 從頭開始構建,可以一次運行多種語言版本的 Web 應用程式,它也可以在運行時完全配置為零中斷,從而可以對工程和操作進行實時粒度管理。
NGINX Unit 1.21.0 已發布,更新內容除了常規的 bugfix 外,還增加了部分新特性,例如支持條件匹配的 PCRE 和多線程請求處理等。
因此,開發者現在可以調整每個應用程式進程中用於請求處理的線程數,這樣能改善伸縮能力並優化內存使用率。另外,應用程式可以將多個進程和每個進程的多個線程結合使用,以實現真正的動態擴展。此功能可直接用於任何 Java、Python、Perl 或 Ruby 應用程式, 而無需更新其代碼。
部分更新內容:
Change: 當使用"rootfs"隔離時,所有語言的 procfs 都會被默認掛載Change: 現在支持在 HTTP header 名字中使用任何符合 RFC 7230 標準的有效字符Change: 包含下劃線 ("_") 的 HTTP header 欄位現在會被默認從請求中丟棄Feature: 為 Java、Python、Perl 和 Ruby 應用程式提供可選的多線程請求處理Feature: 路由匹配模式中新增正則表達式支持Feature: 兼容 Python 3.9Feature: Python 模塊支持 ASGI 2.0 遺留應用Feature: Python 應用中的"protocol"選項有助於在 ASGI 和 WSGI 之間進行選擇Feature: PHP 函數 fastcgi_finish_request() 可以在不保持客戶端連接的情況下完成請求處理並繼續執行代碼Feature: HTTP 選項"discard_unsafe_fields"可以丟棄欄位名中含有不規則字符(但仍然有效)的請求頭欄位Feature: "procfs" 和 "tmpfs" 自動掛載隔離選項,可以禁用同名文件系統的自動掛載Bugfix: 在高負載下運行 Go 應用時,路由器進程可能會崩潰;該 bug 曾在 1.19.0 中出現Bugfix: 使用"rootfs"隔離後,一些語言依賴可能會保持掛載Bugfix: Java 應用中的多項兼容性問題Bugfix: 使用 musl C 庫構建的 Java 模塊無法運行使用"rootfs"隔離的應用程式