.NET 反向代理-YARP

什么是 YARP

YARP (另一个反向代理) 设计为一个库,提供核心代理功能,你可以根据应用程序的特定需求进行自定义。

YARP 是使用 .NET的基础架构构建在 .NET上的。
YARP 的主要不同之处在于,它被设计成可以通过 .NET 代码轻松定制和调整,以满足每个部署场景的特定需求。

同时,YARP是一个开源项目,托管于 Github 上,开源地址 https://github.com/microsoft/reverse-proxy

什么是反向代理

反向代理服务器是代理服务器中的一种,它是在Web服务器之前实现的,并将客户端请求定向到特定的后端服务器。通常,反向代理有助于提高Web服务器的安全性和性能,并防止过载。

e8aac926b026a417885d33e717933e3c.png

反向代理作用

1.负载平衡。通常,拥有许多日常用户的网站无法使用一个原始服务器处理所有流量。因此,网站会在不同后端服务器的群集之间均衡分配用户流量。这些服务器管理同一网站的客户端请求。

此外,反向代理可以避免任意单个服务器过载,因为所有站点的流量都必须通过反向代理。只有这样,流量才能访问特定的后端服务器。

2.保护免受黑客攻击。如果网站使用反向代理,则其服务器的地址将被隐藏,黑客只能访问代理IP地址。这对黑客和恶意实体起到了一定的防护。

例如:对使用反向代理的网站进行分布式拒绝服务(DDoS)攻击要困难得多。DDoS攻击是通过破坏主机服务与互联网的连接,从而使用户无法访问该网站。

当网站使用反向代理时,黑客将只能攻击这些代理,这将作为附加的安全层。

3.缓存。缓存使网站可以有效地重用以前获得的数据。这是将文件副本存储在缓存中以便更迅速地访问的过程。这使网站和应用程序可以更高效地运行。

反向代理服务器可用于缓存网站的内容并提高网站的性能。

如何使用YARP

YARP是基于.Net架构的一个库,其提供了核心代理功能,而又因为 .Net Core 是跨平台的,所以可以应用在 windows 于 linux 上;

既然是一个库,首先第一步肯定是创建一个新项目,并且安装上这一个库:

1、创建一个空的.Net Core 项目

a13cad36c49f349fbf7de18966586630.png

2、在NuGet包管理器中,安装 Yarp.ReverseProxy

2993c8ec45a76d068ded4af70427517a.png

 或者使用 dotnet 命令安装

dotnet add package Yarp.ReverseProxy --version 1.1.1

3、在 Program.cs 中增加配置,.Net 5 及以下版本在 Startup.cs 中添加

Program.cs 

var reverseProxyConfig = builder.Configuration.GetSection("ReverseProxy");
builder.Services.AddReverseProxy().LoadFromConfig(reverseProxyConfig);
app.UseEndpoints(endpoints =>
{endpoints.MapReverseProxy();
});

Startup.cs

- ConfigureServices

services.AddReverseProxy().LoadFromConfig(Configuration.GetSection("ReverseProxy"));

- Configure

app.UseEndpoints(endpoints =>
{endpoints.MapReverseProxy();
});

4、在 appsetting 中添加 ReverseProxy 节点以及配置项

"ReverseProxy": {

"Routes": {"route1": {"ClusterId": "yarp","Match": {"Path": "{**catch-all}"}}},"Clusters": {"yarp": {"LoadBalancingPolicy": "RoundRobin","Destinations": {"blazor": {"Address": "https://www.blazor.zone/"},"baidu": {"Address": "https://www.baidu.com/"}}}}
}

大功告成,可以愉快玩耍了!感谢各位大佬的阅读!下一个文章将会介绍配置文件中的配置项,以及怎么根据域名进行反向代理

原文链接:https://www.cnblogs.com/ysmc/p/16665788.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript 开发的45个经典技巧

2019独角兽企业重金招聘Python工程师标准>>> 前言:此篇译文在各网站均有标注原创的声明,译者名字已不可考,暂为佚名 JavaScript是一个绝冠全球的编程语言,可用于Web开发、移动应用开发(PhoneGap、Appcelera…

PHP循环输出二维数组

目的: 将二维数组中的每一个元素输出 首先定义一个二维数组 //定义数组 $arr array(array(北京,上海,深圳,广州),array(黑龙江,吉林,辽宁,江苏) ); 一 for循环输出 1.1 直接输出 //for循环遍历数组 for($i 0; $i < count($arr); $i) {for($j 0; $j < count($arr[…

回归远程 - 云原生IDE是IaC从表象触达本质的必然选择 | SmartIDE

作者&#xff1a;徐磊&#xff0c;开源云原生SmartIDE创始人、LEANOSFT创始人/首席架构师/CEO&#xff0c;微软最有价值专家MVP/微软区域技术总监Regional Director&#xff0c;华为云最有价值专家。从事软件工程咨询服务超过15年时间&#xff0c;为超过200家不同类型的企业提供…

android获取手机机型、厂商、deviceID基本信息

/*** 系统工具类*/ public class SystemUtil {/*** 获取当前手机系统语言。** return 返回当前系统语言。例如&#xff1a;当前设置的是“中文-中国”&#xff0c;则返回“zh-CN”*/public static String getSystemLanguage() {return Locale.getDefault().getLanguage();}/***…

题目1362:左旋转字符串(Move!Move!!Move!!!)

题目1362&#xff1a;左旋转字符串&#xff08;Move!Move!!Move!!!&#xff09; 时间限制&#xff1a;2 秒 内存限制&#xff1a;32 兆 特殊判题&#xff1a;否 提交&#xff1a;2306 解决&#xff1a;961 题目描述&#xff1a;汇编语言中有一种移位指令叫做循环左移&#xff0…

PHP简单实现递归

//递归 //斐波那契数列 function digui($n) {if($n > 2) {$arr[$n] digui($n-1) digui($n-2);return $arr[$n];} else {return 1;} }//使用 echo digui(5); 总结 : 首先应该想到出口是什么,将出口放在else条件里 例如,本例斐波那契数列中,出口是前两个数是1,也就是数组下…

(三)Controller接口控制器详解(二)

一、AbstractController&#xff08;简单控制器&#xff09; AbstractController使用方法&#xff1a; 首先让我们使用AbstractController来重写第二章的HelloWorldController&#xff1a; public class HelloWorldController extends AbstractController {Overrideprotected M…

[BZOJ]1095 Hide捉迷藏(ZJOI2007)

一道神题&#xff0c;两种神做法。 Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻&#xff0c;并且他们有很多孩子。某天&#xff0c;Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特&#xff0c;由N个屋子和N-1条双向走廊组成&#xff0c;这N-1条走…

Spring4-自动装配Beans-通过注解@Autowired在构造方法上

1.创建Maven项目,项目名称springdemo19,如图所示2.配置Maven,修改项目中的pom.xml文件,修改内容如下<project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://mave…

15个开源的工业软件

出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013)不同的工业流程&#xff0c;需要不同的工业软件。此前&#xff0c;我们已经介绍了面向研发设计环节的开源软件&#xff08;详情查看&#xff1a;20 个开源的工业设计软件&#xff09;&#xff0c;今天就来介绍一下面向…

PHP开发中保证接口安全

模拟客户端请求:<?php namespace Home\Controller; use Think\Controller;class ClientController extends Controller{const TOKEN API;//模拟前台请求服务器api接口public function getDataFromServer(){//时间戳$timeStamp time();//随机字符串$randomStr $this ->…

MySQL远程访问报错解决

2019独角兽企业重金招聘Python工程师标准>>> 我之前的一篇博客讲了MySQL配置远程访问的方法&#xff0c;但是可能配置了账户以后还是不能访问&#xff0c;这可能是防火墙的原因&#xff0c;在CentOS里&#xff0c;我们修改一下防火墙设置就可以了 1. 进入防火墙配置…

jssdk.php

/*** Created by PhpStorm.* Date: 17/8/19* Time: 下午2:24*/ class JSSDK {private $appId;private $appSecret;public function __construct($appId, $appSecret) {$this->appId $appId;$this->appSecret $appSecret;}public function getSignPackage() {$jsapiTick…

GNU/Linux与开源文化的那些人和事

一、计算机的发明 世上本无路&#xff0c;走的人多了&#xff0c;就有了路。世上本无计算机&#xff0c;琢磨的人多了……没有计算机&#xff0c;一切无从谈起。 三个人对计算机的发明功不可没&#xff0c;居功至伟。阿兰图灵&#xff08;Alan Mathison Turing&#xff09;、阿…

PHP使用PHPMailer发送邮件

1. 首先下载phpmailer插件,并将插件复制到目录下 下载地址: http://download.csdn.net/download/m_nanle_xiaobudiu/10261269 2. home/view/user/mail_chck.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><…

python学习记录2

一、两个模块&#xff08;sys和os&#xff09; 1 #!/usr/bin/env python2 # _*_ coding: UTF-8 _*_3 # Author:taoke4 import sys5 print(sys.path)#打印环境变量6 print(sys.argv[0])#当前文件相对路径,sys.argv是一个列表&#xff0c;第一个元素为程序本身的相对路径&#xf…

cordova-config.xml配置应用图标

1. <icon src"res/icon/ios/browser.png"/> 2.规格&#xff1a; iphone平台一般要求3种规格的图片&#xff1a;1x、2x、3x&#xff0c;也是就Icon.png、Icon2x.png、Icon3x.png. 注意&#xff1a;iOS所有图标的圆角效果由系统生成&#xff0c;给到的图标本身不…

将 Figma 设计转换为 .NET MAUI Graphics 代码

原文链接&#xff1a;https://github.com/jsuarezruiz/figma-to-maui-graphics原文作者&#xff1a;jsuarezruiz翻译&#xff1a;沙漠尽头的狼(谷歌翻译加持)&#xff0c;翻译别扭&#xff0c;建议直接阅读原文使用FigmaSharp.Maui.Graphics将Figma设计转换为 .NET MAUI Graphi…

Android之上下文context

Context&#xff0c;中文直译为“上下文”&#xff0c;SDK中对其说明如下&#xff1a; 1、它描述的是一个应用程序环境的信息&#xff0c;即上下文。 2、该类是一个抽象(abstract class)类&#xff0c;Android提供了该抽象类的具体实现类。 3、通过它我们可以获取应用程序的资…

论坛中,无限分类的原理

1.创建数据表 CREATE TABLE category( cat_id SMALLINT unsigned not null auto_increment comment 类别id, cat_name VARCHAR(30) not null default comment 类别名称, par_id SMALLINT unsigned not null default 0 comment 类别父id, PRIMARY KEY (cat_id) )enginemyisam …