2021年 11 月,微軟正式發布了 YARP(Yet Another Reverse Proxy)1.0,這是一個由微軟在過去幾年作為開源項目開發的反向代理項目。
常規代理是充當專用網絡和互聯網之間的網關的軟件。它偵聽傳出的 HTTP 請求,通常執行與隱私或安全相關的任務。
反向代理以相反的方式工作。它通常設置在本地網絡內部,位於防火牆后面,並偵聽傳入的請求。它通常用作將傳入請求重定向到適當端點的路由器,這可能發生在多台 Web 服務器在一台機器上運行甚至設置負載平衡系統時。
反向代理在應用層(OSI 第 7 層)工作,這意味着它們可以根據其 URL 和標頭處理請求,這與作用於傳輸層(OSI 第 4 層)的物理路由器或防火牆不同。
由於反向代理項目的范圍很廣,因此很難為它選擇合適的軟件,但從頭開始開發一個全新的應用程序也會消耗大量時間。基於這些考慮,Microsoft 提出了 YARP,這是一個可用於使用 .NET 構建自定義反向代理的工具包。
YARP 是由 Microsoft 的 ASP.NET 和網絡團隊用 C# 編寫的,它提供了幾個與代理相關的功能,開發人員可以利用這些功能。可以使用 URL 或 HTTP 標頭定義路由;它們可以與應用程序配置文件中的目標一起設置或以編程方式設置。對於只需要重定向請求的應用程序,開發人員不需要運行完整的 YARP 解決方案。有一個特性叫做直接轉發,可以通過接口使用,它代表ASP.NET Core 傳入和System.Net.Http傳出請求IHttpForwarder
之間的核心代理適配器。
YARP 有五種負載均衡策略:FirstAlphabetical
、Random
、PowerOfTwoChoices
(默認)、RoundRobin
、 和LeastRequests
,開發者可以根據自己的需要來選擇。
反向代理工具上的其他功能包括目標健康檢查、URL 和 HTTP 方法轉換,以及測量性能和日志以跟蹤請求及其操作。
這是 YARP 的第一個正式版本。盡管如此,微軟已經列出了未來版本的功能,比如對 HTTP 3 的完全支持、性能改進、用 LLHTTP 替換使用以及HttpClient
與 Kubernetes 的集成。
要開始使用 YARP,您只需在項目中引用它的NuGet 包並根據您的要求開始編碼。該項目是開源的,它與 .NET Core 3.1、.NET 5 和 .NET 6 兼容。因此它可以在 Linux、macOS 和 Windows 操作系統上使用。在項目的 GitHub 頁面上,可以找到更多信息,例如 YARP 的文檔、打開和關閉的問題,以及關於剛剛發布的反向代理的討論。