跳至页脚内容
Iron Academy Logo
学习 C#
学习 C#

其他类别

C# 中的 YARP 简介 - 如何创建反向代理

Tim Corey
52分31秒

在 .NET Core 环境中有效管理网络流量时,反向代理成为不可或缺的工具。 YARP 是 Yet Another Reverse Proxy 的缩写,是微软专为 .NET 生态系统打造的高度灵活、高度可定制的反向代理项目。 在本文中,我们将按照 Tim Corey 的综合教程"Intro To YARP In C# - How To Create a Reverse Proxy"深入学习 YARP 的入门知识,他在该教程中演示了在 .NET Core Web 应用程序中设置和使用 YARP。

让我们从介绍 YARP 开始,看看您如何在自己的项目中利用这个代理框架。

什么是反向代理?

1:07 时,Tim 解释说,反向代理位于客户端(用户)和后端服务器之间,管理传入的请求并将请求有效地路由到适当的目的地。

蒂姆在 1:45 处概述了代理服务器的重要性:它不仅能平衡负载,还能简化请求头、确保 HTTPS 连接的安全性,并确保后端服务与直接访问隔离。 通过使用反向代理,您可以在不暴露内部结构的情况下轻松扩展您的 .NET Core 应用程序。

YARP 简介

5:11 时,Tim 介绍了 YARP - Yet Another Reverse Proxy。 Tim 解释说,微软意识到需要一个代理框架来更好地满足其广泛的 .NET 应用程序的特定需求,从而创建了 YARP。它被设计成一个库,以模块化、健壮和可扩展的方式提供核心代理功能。

Getting Started With Yarp In Csharp 1 related to YARP 简介

该库正在积极开发中,以确保包含最新功能并支持 Linux、Windows 和云环境等最新技术。

此外,Tim 还强调了 YARP 的全面维护文档和大量可用文档,这让新开发人员更容易上手。

设置基本 YARP 项目

6:14 时,Tim 使用 net SDK 在 Visual Studio 中启动一个新项目。 他创建了一个名为 Pessimistic API 的基本 ASP.NET Core Web API 项目。

Getting Started With Yarp In Csharp 2 related to 设置基本 YARP 项目

7:02 时的 Tim 修改了项目,创建了一个模拟寒冷天气服务的悲观 API。这个简单的 .NET Core 应用程序就是 YARP 稍后代理的后端服务器。

Tim 在 8:44 建议在继续前行之前对项目进行验证,确保示例服务能正确响应 /weatherforecast 请求。

创建 YARP 网关

在 9:04 时,Tim 创建了一个名为 YarpGateway 的空 ASP.NET Core 项目。 本项目充当反向代理。

Tim 通过进入 Manage NuGet Packages 并搜索 install package YARP 来安装必要的软件包(10:24)。 这就需要使用 YARP Reverse Proxy(提供所需的核心代理功能的官方库)。

配置 YARP.

12:02 时,Tim 演示了如何在 Program.cs 中使用以下方法连接 YARP 配置:

builder.Services.AddReverseProxy().LoadFromConfig(builder.Configuration.GetSection("YARP"));
builder.Services.AddReverseProxy().LoadFromConfig(builder.Configuration.GetSection("YARP"));

该设置可加载定义路由和集群的配置文件,这些文件是使用 YARP 路由请求时的基本要素。

路由与传入路径相匹配,集群定义要转发的后端服务。 这种模块化配置支持添加速率限制、替换模块和微调路径管理等高级功能。

Tim 指出,这种灵活的设计正是 YARP 成为高度可定制的反向代理,适合实际项目的原因。

测试基本代理设置

在 20:02 分,Tim 展示了同时运行后端 Pessimistic APIYarpGateway 的情况。

当您导航到网关的 URL /weatherforecast 时,YARP 会将传入的请求路由到后端服务器,获取响应并提供服务,而不会暴露内部 URL。 这展示了代理功能和路由请求的实际操作。

利用第二后台进行扩展

21:17 时,Tim 添加了另一个名为 Optimistic API 的新项目,该项目只返回温暖的温度。

他将 YARP 配置为单个集群中的多个目的地。 这可以实现负载均衡--在两个后端服务器之间随机分配接收到的请求。

随后,在 26:26 处,Tim 解释说您可以进一步自定义负载平衡策略,包括循环或基于请求属性的自定义逻辑等选项。

使用 YARP 升级静态网站

28:12 时,Tim 讲述了一个真实的例子:升级自己的网站 (iamtimcorey.com)。

他创建了一个 WebsiteUpgrade .NET Core 网络应用程序,使用 catch-all 路由将所有流量代理到原始网站。

Getting Started With Yarp In Csharp 3 related to 使用 YARP 升级静态网站

这种策略允许增量更新:Tim 可以使用 Razor 对页面进行重建和现代化,同时仍然支持传统系统提供的旧内容。 收到的请求会根据路径自动转到原始网站或新内容。

使用 Razor 页面添加新功能

34:30 时,Tim 将 Razor Pages 添加到升级项目中。 他展示了如何添加一个简单的页面 (/more),由新的应用程序直接提供服务,而其他所有内容都是代理的。

由于 YARP 的灵活性,可以在不影响现有后台服务的情况下添加新的模块和功能。

实现高级路由和路径转换

在 39:03 处,Tim 建立了一个 /random 路由,它可以重写路径并在三个不同的课程页面中随机重定向用户。

他使用 YARP 的转换功能在代理过程中修改请求头和路径,展示了开发人员如何根据特定需求对行为进行微调。

Tim 在 44:03 左右遇到一个错别字,但他纠正了错误,并强调要仔细关注配置文件。

设置循环负载平衡

45:10 时,Tim 将随机路由切换为循环路由。 这一简单的配置更改提高了在多个页面之间分配流量的可预测性。

Getting Started With Yarp In Csharp 4 related to 设置循环负载平衡

它突出了 YARP 的主要特点之一:仅通过配置即可轻松动态地定制行为,无需深入修改代码。

结论:为什么选择 YARP?

47:03 时,Tim 总结了 YARP 为何是现代 .NET Core 应用程序的关键工具:

  • 它被设计成一个库,便于集成。

  • 它提供了开发人员所需的核心代理功能。

  • 微软正在积极开发中。

  • 它支持 Linux、Windows 和 HTTPS。

  • 它有大量的文档和全面的维护文档。

  • 它可以将请求灵活地路由到多个后端服务器。

  • 它支持轻松定制,以满足特定需求。

  • 它是生产级的,具有可扩展性,并针对性能进行了调整。

Tim 鼓励观众按照官方文档或 YARP 完整课程的建议,探索更多功能,如限制速率、替换模块和更深入的 API 网关设置。

最后的想法

通过观看 Tim Corey 设置 YARP 反向代理的完整视频,任何开发人员都可以快速掌握另一种反向代理。 无论您是处理复杂的负载平衡、更换模块,还是逐步升级网站,YARP Yet Another Reverse Proxy 都能为 .NET Core 世界提供坚实、灵活的解决方案。 请访问他的YouTube频道,了解更多有深度的视频。

Hero Worlddot related to C# 中的 YARP 简介 - 如何创建反向代理
Hero Affiliate related to C# 中的 YARP 简介 - 如何创建反向代理

分享您的所爱,赚取更多收入

您为使用 .NET、C#、Java、Python 或 Node.js 的开发人员创建内容吗?将您的专业知识转化为额外收入!

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我