{
"ReRoutes": [
{
/*将用户的请求 /post/1 转发到 localhost/api/post/1*/
/*
DownstreamPathTemplate:转到的地址
DownstreamScheme:转到的请求协议
DownstreamHostAndPorts:转到的端口地址及端口信息
UpstreamPathTemplate:监听路由地址
UpstreamHttpMethod:监听路由请求类型 可用数组
Priority:路由的优先级Prority是大的会被优先选择
万能模版转发:
{
"DownstreamPathTemplate": "/{url}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 80,
}
],
"UpstreamPathTemplate": "/{url}",
"UpstreamHttpMethod": [ "Get" ]
}
*/
"DownstreamPathTemplate": "/api/post/{postId}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port":
}
],
"UpstreamPathTemplate": "/post/{postId}",
"UpstreamHttpMethod": [ "Get" ],
"Priority": , /*设置HttpHeaders*/
"AddHeadersToRequest": {},
"AddClaimsToRequest": {},
/*
鉴权
我们通过认证中的AllowedScopes 拿到claims之后,如果要进行权限的鉴别需要添加以下配置
"RouteClaimsRequirement": {
"UserType": "registered"
}
*/
"RouteClaimsRequirement": {},
"AddQueriesToRequest": {},
"RequestIdKey": "",
/*
缓存
Ocelot可以对下游请求结果进行缓存 ,目前缓存的功能还不是很强大。它主要是依赖于CacheManager 来实现的,我们只需要在路由下添加以下配置即可
Region是对缓存进行的一个分区,我们可以调用Ocelot的 administration API来移除某个区下面的缓存
*/
"FileCacheOptions": {
"TtlSeconds": ,
"Region": "somename"
},
"ReRouteIsCaseSensitive": false,
"ServiceName": "", /*
服务质量与熔断:熔断的意思是停止将请求转发到下游服务。当下游服务已经出现故障的时候再请求也是功而返,并且增加下游服务器和API网关的负担。这个功能是用的Pollly来实现的,我们只需要为路由做一些简单配置即可
ExceptionsAllowedBeforeBreaking 允许多少个异常请求
DurationOfBreak 熔断的时间,单位为秒
TimeoutValue 如果下游请求的处理时间超过多少则自如将请求设置为超时
*/
"QoSOptions": {
"ExceptionsAllowedBeforeBreaking": ,
"DurationOfBreak": ,
"TimeoutValue":
},
/*
LeastConnection – 将请求发往最空闲的那个服务器
RoundRobin – 轮流发送
NoLoadBalance – 总是发往第一个请求或者是服务发现
*/
"LoadBalancer": "", //将决定负载均衡的算法
/*
限流
对请求进行限流可以防止下游服务器因为访问过载而崩溃,
非常优雅的实现,我们只需要在路由下加一些简单的配置即可以完成
ClientWihteList 白名单
EnableRateLimiting 是否启用限流
Period 统计时间段:1s, 5m, 1h, 1d
PeroidTimeSpan 多少秒之后客户端可以重试
Limit 在统计时间段内允许的最大请求数量
*/
"RateLimitOptions": {
"ClientWhitelist": [],
"EnableRateLimiting": false,
"Period": "",
"PeriodTimespan": ,
"Limit":
},
/*
认证
如果我们需要对下游API进行认证以及鉴权服务的,则首先Ocelot 网关这里需要添加认证服务。这和我们给一个单独的API或者ASP.NET Core Mvc添加认证服务没有什么区别。
JWT Token
public void ConfigureServices(IServiceCollection services)
{
var authenticationProviderKey = "ProviderKey"; services.AddAuthentication()
.AddJwtBearer(authenticationProviderKey, x =>
{
});
}
然后在ReRoutes的路由模板中的AuthenticationOptions进行配置,只需要我们的AuthenticationProviderKey一致即可。
"AuthenticationOptions": {
"AuthenticationProviderKey": "ProviderKey",
"AllowedScopes": []
}
}] 添加Identity Server的认证也是一样 public void ConfigureServices(IServiceCollection services)
{
var authenticationProviderKey = "TestKey";
var options = o =>
{
o.Authority = "identityserver4的地址";
o.ApiName = "api";
o.SupportedTokens = SupportedTokens.Both;
o.ApiSecret = "secret";
}; services.AddAuthentication()
.AddIdentityServerAuthentication(authenticationProviderKey, options); services.AddOcelot();
}
*/
"AuthenticationOptions": {
"AuthenticationProviderKey": "",
"AllowedScopes": []
},
/* */
"HttpHandlerOptions": {
"AllowAutoRedirect": true,
"UseCookieContainer": true,
"UseTracing": true
},
"UseServiceDiscovery": false,
"Key": "keys1"
}
],
"Aggregates": [
{
"ReRouteKeys": [
"keys1",
"keys2"
],
"UpstreamPathTemplate": "/"
}
],
"GlobalConfiguration": {
"BaseUrl": "http://localhost:5002" }
}

Ocelot 配置初始的更多相关文章

  1. 写个重新加载 ocelot 配置的接口

    写个重新加载 ocelot 配置的接口 Intro 我们想把 ocelot 的配置放在自己的存储中,放在 Redis 或者数据库中,当修改了 Ocelot 的配置之后希望即时生效,又不想在网关这边定时 ...

  2. .Net微服务实践(三):Ocelot配置路由和请求聚合

    目录 配置 路由 基本配置 占位符 万能模板 优先级 查询参数 请求聚合 默认聚合 自定义聚合 最后 在上篇.Net微服务实践(二):Ocelot介绍和快速开始中我们介绍了Ocelot,创建了一个Oc ...

  3. CentOs安装Mysql和配置初始密码

    mysql官网yum安装教程,地址:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/#repo-qg-yum-fresh-install ...

  4. 微服务网关从零搭建——(六)ocelot配置追踪功能

    butterfly 准备工作 首先下载buterfly release版本 解压并通过命令启动:dotnet Butterfly.Web.dll --EnableHttpCollector=true ...

  5. Ocelot 配置参数

    Downstream是下游服务配置 UpStream是上游服务配置 Aggregates 服务聚合配置 ServiceName, LoadBalancer, UseServiceDiscovery 配 ...

  6. .net5+nacos+ocelot 配置中心和服务发现实现

    最近一段时间 因公司业务需要,需要使用.net5做一套微服务的接口,使用nacos 做注册中心和配置中心,ocelot做网关. 因为ocelot 支持的是consol和eureka,如果使用nacos ...

  7. ocelot配置

    动态配置 { "ReRoutes": [], "Aggregates": [], "GlobalConfiguration": { &quo ...

  8. hbuider配置初始

    { "forEach": { "prefix": "fec", "body": [ ".forEach(fun ...

  9. Hadoop 管理工具HUE配置-初始配置

    1 界面换成中文 默认是英文的,可以修改为中文 1.修改配置文件settings.pynano hue/desktop/core/src/desktop/settings.py LANGUAGE_CO ...

随机推荐

  1. Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)

    Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符缓冲流 字符缓冲流根据流的 ...

  2. saltsack自动化配置day03:服务部署mysql部署

    一.MySQL集群需求分享 1.抽象:功能模块 把基础的写成通用 服务部署也要抽象出来模块 redis内存有的多,有的少,可以config set在线更改 redis 安装.配置.启动 mysql 安 ...

  3. Training Neural Networks: Q&A with Ian Goodfellow, Google

    Training Neural Networks: Q&A with Ian Goodfellow, Google Neural networks require considerable t ...

  4. mysql自学路线

    入门: -Head First:PHP & MySQL.Lynn Beighley -MySQL必知必会 -MySQL5.5从零开始学.刘增杰 -MYSQL完全手册 (the Complete ...

  5. div+css+jQuery简单实现投票功能

    昨天看到C#群里有人问一个投票功能如何实现... 我对此很感兴趣,为了练习一下,就有了以下代码. 投票功能使用jQuery实现..纯html代码...数据通过json字符串传递,通过 eval转换为j ...

  6. 说说JavaScript中的事件模型

    1.javascript中为元素添加事件处理程序的方法有以下几种方式,可以为javascript元素添加事件处理程序 (1) 直接将事件处理代码写在html中(2) 定义一个函数,赋值给html元素的 ...

  7. C语言的内存对齐

    从一个例子开始 象下面这样定义的结构体占几个字节? typedef struct{ char a; int i; } Sample; char占1个字节,int占4个字节,答案是5个字节? 错了.如果 ...

  8. nc使用笔记

    netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据.通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它. 现内网中有两台机器:Mac: 192.168.1.109 Ka ...

  9. 利用Django REST framework快速实现文件上传下载功能

    安装包 pip install Pillow 设置 首先在settings.py中定义MEDIA_ROOT与MEDIA_URL.例如: MEDIA_ROOT = os.path.join(BASE_D ...

  10. 37、使用FileInputStream和FileOutputStream读取和写入

    绝对路径和相对路径 绝对路径:指文件在硬盘上真正存在的路径,比如:D:\Java\HelloWorld.java,这个指的是在电脑的d盘下的Java文件夹里面有个HelloWorld.java文件 相 ...