IRONSOFTWAREHOME

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

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。它被设计成一个库,以模块化、健壮和可扩展的方式提供核心代理功能。

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

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

设置基本 YARP 项目

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

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"));

该设置可加载定义路由和集群的配置文件,这些文件是使用 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 路由将所有流量代理到原始网站。

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

使用 Razor 页面添加新功能

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

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

实现高级路由和路径转换

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

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

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

设置循环负载平衡

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

它突出了 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频道,了解更多有深度的视频。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

OR
bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户