IRONSOFTWAREHOME

C#中的YARP介紹 - 如何建立一個反向代理

Intro To YARP In C# - How To Create a Reverse Proxy

Tim Corey

52m 31s

在.NET Core環境中有效管理網路流量時,反向代理成為不可或缺的工具。 YARP,全稱為Yet Another Reverse Proxy,是Microsoft的高靈活性和高可定制性的反向代理專案,專門為.NET生態系統構建。 在本文中,我們將深入了解如何使用YARP,跟隨Tim Corey在Intro To YARP In C# - How To Create a Reverse Proxy的詳細教學,展示如何在.NET Core網路應用程式中設定和使用YARP。

讓我們從介紹YARP開始,並探討您如何在自己的專案中利用這個代理框架。

什麼是反向代理?

在1:07時,Tim解釋反向代理位於使用者與後端伺服器之間,管理進來的請求並有效地將請求路由到適當的目的地。

Tim在1:45指出代理的重要性:不僅在於負載平衡,還能簡化請求標頭、用HTTPS保護連接,並確保後端服務不被直接存取。 通過使用反向代理,您可以輕鬆擴展您的net core應用程式,而不暴露您的內部結構。

YARP介紹

在5:11時,Tim介紹了YARP,即Yet Another Reverse Proxy。 Tim解釋,由於Microsoft意識到需要一個更適合其廣泛.NET應用需求的代理框架,因此建立了YARP。它被設計為一個提供核心代理功能的程式庫,具有模組化、強大和可擴展的特性。

該程式庫正在積極開發中,確保包含最新特性,並支持最新技術如Linux、Windows和雲環境。

此外,Tim強調YARP擁有詳盡維護的文件和豐富的文件,讓初學者更容易上手。

設置基本YARP專案

在6:14時,Tim在Visual Studio中使用net SDK開始了一個新專案。 他建立了一個基本的ASP.NET Core Web API專案,命名為Pessimistic API

在7:02時,Tim修改專案,建立了一個模擬寒冷天氣服務的Pessimistic API。這個簡單的net core應用程式是YARP後面將代理到的後端伺服器。

Tim在8:44建議驗證專案,在繼續之前,確保範例服務對/weatherforecast的請求正確響應。

建立YARP Gateway

在9:04,Tim建立了一個名為YarpGateway的空ASP.NET Core專案。 這個專案充當反向代理。

Tim演示如何通過進入管理NuGet包和搜尋安裝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 web應用程式,使用catch-all route將所有流量代理到原始網站。

這個策略允許進行漸進式更新:Tim可以使用Razor重建和現代化頁面,同時支持由舊系統提供的舊內容。 根據路徑,進來的請求自動路由到原始網站或新內容。

用Razor Pages新增新功能

在34:30,Tim在升級專案中新增Razor Pages。 他展示了如何新增一個簡單的頁面(/more),由新應用程式直接提供服務,而其他一切則通過代理。

感謝YARP的靈活性,無需打擾現有後端服務即可新增新模組和功能。

實現進階路由和路徑轉換

在39:03時,Tim構建了一個/隨機路由,重寫路徑並隨機將使用者重定向到三個不同的課程頁面。

他使用YARP的轉換功能來在代理期間修改請求標頭和路徑,展示開發者如何根據具體需求微調行為。

Tim在44:03左右發現了一個錯誤並修正了它,強調對配置文件的小心注意。

設置迴圈負載平衡

在45:10時,Tim將隨機路由切換到了輪循。 這個簡單的配置更改提高了在多個頁面之間分配流量的可預測性。

這突顯了YARP的一個關鍵特性:只需通過配置方式即可輕鬆動態客製化行為,無需大量程式碼調整。

結論:為什麼選擇YARP?

在47:03,Tim總結了為何YARP是現代net core應用程式的關鍵工具:

  • 它被設計成便於整合的程式庫。

  • 它提供開發者所需的核心代理功能。

  • 由Microsoft積極開發。

  • 開箱支持Linux、Windows和HTTPS。

  • 擁有詳盡的文件和綜合維護的文件。

  • 它允許靈活地將請求路由到多個後端服務。

  • 支持特定需求的輕鬆定制。

  • 它是生產級的、可擴展的並針對性能進行了調整。

Tim鼓勵觀眾透過官方文件或建議的完整YARP課程來探索更多功能,如速率限制、替換模組和更深入的API網關設置。

最後的想法

透過觀看Tim Corey的完整影片,任何開發者都可以快速掌握另一個反向代理。 無論您是處理複雜的負載平衡、替換模組或漸進式升級您的網站,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天試用金鑰
無需信用卡或帳戶建立