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 的文档、打开和关闭的问题,以及关于刚刚发布的反向代理的讨论。