在YARP框架中,核心处理类是IHttpForwarder接口,它实现了基础的转发流程:从 HttpContext 创建 Http 查询信息、发送到目标地址,并将响应结果写会HttpContext。
IHttpForwarder特点如下:
- 灵活,能根据请求动态选择代理目标
- 强大,能修改http请求和响应的头
- 支持gRPC或WebSockets这种流式协议
- 支持异常处理
它简单灵活,本身是一个反向代理的功能类的。 用它本身是可以非常简单的实现一个反向代理功能的。代码如下:
using Yarp.ReverseProxy.Forwarder ;
var builder = WebApplication . CreateBuilder(args);
builder.Services .AddHttpForwarder (); //添加服务
var httpClient = new HttpMessageInvoker (new SocketsHttpHandler ()
{
UseProxy = false,
AllowAutoRedirect = false ,
});
var requestConfig = new ForwarderRequestConfig ();
var app = builder.Build ();
var forwarder = app.Services .GetService
跑起来后,就可以发现test下的接口都已经可以转发到 http://localhost:5132/ 了。
更多信息可以参看微软的官方文档Direct Forwarding,微软也提供了一个最简单的完整示例ReverseProxy.Direct.Sample。
上述代码本身是实现了一个完整的的反向代理的功能的。和目前的主流的反向代理框架比起来,主要缺少一些高级功能,如:路由匹配、负载均衡、会话保持、重试等。但这些高级功能本身不是必须的,这个时候直接用IhttpProxy更加简单直接,也可以方便我们自己构建一个更加灵活高效的反向代理框架。
参考文章:
Original: https://www.cnblogs.com/TianFang/p/16357549.html
Author: 天方
Title: YARP简介 —— IHttpForwarder
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/546953/
转载文章受原作者版权保护。转载请注明原作者出处!