В развивающемся мире современных веб-приложений возникает общая потребность по разным причинам: необходимость направлять клиентские запросы с одного сервера на несколько серверных служб, скрывая от клиента идентификационные данные этих внутренних служб. Эта концепция известна как обратный прокси-сервер и стала основой архитектуры приложений благодаря своим мощным функциям балансировки нагрузки и безопасности.
Эта запись в блоге поможет вам реализовать обратный прокси-сервер с помощью .NET Core и Azure. Давайте начнем.
Понимание обратного прокси
Обратный прокси — это тип сервера, который извлекает ресурсы от имени клиента из одной или нескольких служб. Клиенты взаимодействуют с обратным прокси-сервером, и прокси-сервер перенаправляет запросы в соответствующую серверную службу.
Шаг 1. Создайте проект веб-API ASP.NET Core.
Во-первых, нам нужно создать новый проект в .NET Core для нашего обратного прокси.
Откройте терминал или командную строку, перейдите в нужный каталог и выполните следующую команду:
dotnet new web -n ReverseProxy
Эта команда создает новый проект веб-API с именем «ReverseProxy».
Шаг 2: Настройте промежуточное ПО YARP
В нашем проекте ReverseProxy мы будем использовать промежуточное ПО YARP (Yet Another Reverse Proxy), мощную библиотеку, разработанную для .NET для создания обратного прокси.
Сначала добавьте пакет YARP NuGet в свой проект:
cd ReverseProxy dotnet add package Microsoft.ReverseProxy -v 1.0.0-preview.11
В файле Startup.cs добавьте следующий код в метод Configure:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapReverseProxy(); // Add this line to map the reverse proxy }); }
Это сопоставит обратный прокси-сервер с вашими конечными точками.
Шаг 3. Настройте параметры прокси-сервера
Далее мы настроим конфигурации прокси. Эти настройки определяют, как обратный прокси-сервер будет обрабатывать входящие запросы.
В файл appsettings.json добавьте следующий код:
"ReverseProxy": { "Routes": [ { "RouteId": "route1", "ClusterId": "cluster1", "Match": { "Path": "{**catch-all}" } } ], "Clusters": { "cluster1": { "Destinations": { "cluster1/destination1": { "Address": "https://your-azure-service-url/" } } } } }
Эта конфигурация будет перенаправлять все входящие запросы в указанную службу Azure.
Шаг 4. Развертывание прокси-сервера в Azure
Следующим шагом будет развертывание обратного прокси-сервера в Azure. Здесь мы будем использовать службу приложений Azure — платформу как услугу от Microsoft, которая обеспечивает простое размещение и масштабирование веб-приложений.
Создайте службу приложений Azure.
Перейдите на портал Azure и создайте новую службу приложений.
Опубликовать прокси-приложение
В локальном терминале перейдите в каталог вашего проекта и выполните следующую команду, чтобы опубликовать свой проект:
dotnet publish -c Release -o ./publish
Загрузите опубликованное приложение
Перейдите к службе приложений на портале Azure и с помощью дополнительных инструментов (Kudu) загрузите файлы, расположенные в каталоге публикации вашего проекта.
Запустите приложение
На портале Azure перейдите на страницу обзора службы приложений и нажмите кнопку Пуск, если служба еще не запущена.
Поздравляем! Вы успешно развернули обратный прокси-сервер с помощью .NET Core и Azure. Теперь ваши клиентские приложения могут подключаться к серверной службе Azure, используя URL-адрес вашей службы приложений Azure, а не напрямую вызывать серверную часть.
Заключение
Применение обратного прокси — мощная техника в архитектуре веб-приложений. Он обеспечивает балансировку нагрузки, обеспечивает уровень безопасности и помогает поддерживать чистоту и управляемость архитектуры службы. Эта запись в блоге должна предоставить вам отправную точку для реализации обратного прокси-сервера с использованием .NET Core и Azure. Поэкспериментируйте с более сложными конфигурациями и вариантами использования, чтобы максимально эффективно использовать эти инструменты.