[译]Ocelot - Configuration
这里有一个配置的样例。配置主要有两个部分。一个是ReRoutes数组,另一个是GlobalConfiguration。ReRoute告诉Ocelot怎么处理上游的请求。Global configuration能让我们覆盖一些ReRoute的一些配置。
{
"ReRoutes": [],
"GlobalConfiguration": {}
}
这里是一个ReRoutes的配置样例(你不需要设置下面所有的配置):
{
"DownstreamPathTemplate": "/",
"UpstreamPathTemplate": "/",
"UpstreamHttpMethod": [
"Get"
],
"AddHeadersToRequest": {},
"AddClaimsToRequest": {},
"RouteClaimsRequirement": {},
"AddQueriesToRequest": {},
"RequestIdKey": "",
"FileCacheOptions": {
"TtlSeconds": 0,
"Region": ""
},
"ReRouteIsCaseSensitive": false,
"ServiceName": "",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 51876,
}
],
"QoSOptions": {
"ExceptionsAllowedBeforeBreaking": 0,
"DurationOfBreak": 0,
"TimeoutValue": 0
},
"LoadBalancer": "",
"RateLimitOptions": {
"ClientWhitelist": [],
"EnableRateLimiting": false,
"Period": "",
"PeriodTimespan": 0,
"Limit": 0
},
"AuthenticationOptions": {
"AuthenticationProviderKey": "",
"AllowedScopes": []
},
"HttpHandlerOptions": {
"AllowAutoRedirect": true,
"UseCookieContainer": true,
"UseTracing": true
},
"UseServiceDiscovery": false,
"DangerousAcceptAnyServerCertificateValidator": false
}
Multiple environments
Ocelot支持如configuration.dev.json, configuration.test.json等,这样的配置文件。
.ConfigureAppConfiguration((hostingContext, config) =>
{
config
.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
.AddJsonFile("appsettings.json", true, true)
.AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", true, true)
.AddJsonFile("ocelot.json")
.AddJsonFile($"configuration.{hostingContext.HostingEnvironment.EnvironmentName}.json")
.AddEnvironmentVariables();
})
Merging configuration files
可以使用AddOcelot()来替换AddJsonFile("ocelot.json")。
.ConfigureAppConfiguration((hostingContext, config) =>
{
config
.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
.AddJsonFile("appsettings.json", true, true)
.AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", true, true)
.AddOcelot()
.AddEnvironmentVariables();
})
这种情况下Ocelot会查找匹配 (?i)ocelot.([a-zA-Z0-9]*).json的文件,然后合并他们。如果你想设置GlobalConfiguration属性,那么必须要有一个ocelot.global.json文件。
Ocelot合并配置文件的方式,就是去加载它们,然后循环遍历这些文件,添加ReRoutes,AggregateReRoutes, and if the file is called ocelot.global.json add the GlobalConfiguration aswell as any ReRoutes or AggregateReRoutes。Ocelot会将合并的文件保存为ocelot.json,在ocelot运行的时候使用这个文件。
在合并前不会做任何验证。如果出现了问题,建议检查ocelot.json文件。
Store configuration in consul
如果在注册ocelot服务的时候添加了下面的代码,ocelot会将配置信息存储在consul的键值存储中,并且读取也会从consul的键值存储中读取。
services
.AddOcelot()
.AddStoreOcelotConfigurationInConsul();
同时,你需要将下面的代码添加到ocelot.json中。这样Ocelot才能找到Consul和它进行交互,从Consul中存储&加载配置。
"GlobalConfiguration": {
"ServiceDiscoveryProvider": {
"Host": "localhost",
"Port": 9500
}
}
Reload JSON config on change
Ocelot支持当配置文件发生修改后重新加载配置。下面代码使得当ocelot.json手动更新后重新加载配置文件。
config.AddJsonFile("ocelot.json", optional: false, reloadOnChange: true);
Configuration Key
如果你使用了Consul来读取&存储配置,你可能需要用一个key来标识配置文件,这样就可以有多个配置了。只需要设置ServiceDiscoveryProvider的ConfigurationKey就能为配置指定一个key了:
"GlobalConfiguration": {
"ServiceDiscoveryProvider": {
"Host": "localhost",
"Port": 9500,
"ConfigurationKey": "Oceolot_A"
}
}
这样Ocelot在通过Consul加载配置文件的时候会查找key为Oceolot_A的配置。
如果没有设置ConfigurationKey, ocelot会使用InternalConfiguration作为key。
Follow Redirects / Use CookieContainer
使用ReRoute中的HttpHandlerOptions来设置HttpHandler的行为:
AllowAutoRedirect用来标识请求是否应该redirection responses。设置true会自动从下游资源redirection response。默认为:false。UseCookieContainer用来标识是否使用CookieContainer存储服务器cookie,并且在发送请求的时候带上这些cookie。默认为:false。如果你使用了CookieContainer, Ocelot会为每个下游服务缓存HttpClient。这意味所有对DownstreamService的请求都会共享同样的cookie。建议不要使用CookieContainer。
SSL Errors
如果你想忽略SSL警告|错误,你需要这样配置ReRoute:
"DangerousAcceptAnyServerCertificateValidator": false
[译]Ocelot - Configuration的更多相关文章
- [译]Ocelot - Getting Started
原文 Ocelot专为.NET Core而设计. .NET Core 2.1 安装 首先需要创建一个netstandard2.0项目,然后再通过nuget安装. Install-Package Oce ...
- [译]Ocelot - Big Picture
原文 目录 Big Picture Getting Started Configuration Routing Request Aggregation Service Discovery Authen ...
- [译]Ocelot - Load Balancer
原文 可以对下游的服务进行负载均衡. 提供了下面几种负载均衡: LeastConnection - tracks which services are dealing with requests an ...
- [译]Ocelot - Quality of Service
原文 可以针对每个ReRoute设置对下游服务的熔断器circuit breaker.这部分是通过Polly实现的. 将下面的配置添加到一个ReRoute下面去. "QoSOptions&q ...
- [译]Ocelot - Caching
原文 Ocelot支持基本的缓存,目前Ocelot的缓存是通过CacheManager project实现的. 下面的示例展示了如何启用缓存: s.AddOcelot() .AddCacheManag ...
- [译]Ocelot - Rate Limiting
原文 Ocelot支持对上游做访问限流,这样就可以保证下游不要负载太大了. 如果要启用访问限流,需要做如下配置: "RateLimitOptions": { "Clien ...
- [译]Ocelot - Service Discovery
原文 你可以指定一个service discovery provider,ocelot将使用它来找下游的host和port. Consul 下面的配置要放在GlobalConfiguration中.如 ...
- [译]Ocelot - Request Aggregation
原文 Aggregate ReRoutes用来组合多个ReRoutes,将它们的响应结果映射到一个响应中返回给客户端. 为了使用Aggregate ReRoutes,你必须像下面的ocelot.jso ...
- [译]Ocelot - Routing
原文 Ocelot主要的功能就是将http请求转发到对应的下游服务上去. Ocelot将一个请求路由到另外一个路由的动作叫做ReRoute.为了能让Ocelot能正常工作,需要在配置中设置ReRout ...
随机推荐
- bsp makefile2
1. grep "bsp_dir" -r ./ -s --exclude-dir "*.git" 用这个加快目录定位-- 2.编译所有子目录 for dir ...
- Kerberos原理
前些日子为了搞清楚Kerberos原理,把MIT的Kerberos经典对话看了几遍,终于有了一个稍微清晰的认识,这里稍微记录下,因为Kerberos是使用传统加密技术实现的一个认证机制,所以顺便备忘下 ...
- 【题解】洛谷P3660 [USACO17FEB]Why Did the Cow Cross the Road III
题目地址 又是一道奶牛题 从左到右扫描,树状数组维护[左端点出现而右端点未出现]的数字的个数.记录每个数字第一次出现的位置. 若是第二次出现,那么删除第一次的影响. #include <cstd ...
- Django-CRM项目学习(二)-模仿admin实现stark
开始今日份整理 1.stark模块基本操作 1.1 stark模块的启动 保证django自动的加载每一个app下的stark.py文件 创建django项目,创建stark项目,start app ...
- pytorch Debug —交互式调试工具Pdb (ipdb是增强版的pdb)-1-在pytorch中使用
参考深度学习框架pytorch:入门和实践一书第六章 以深度学习框架PyTorch一书的学习-第六章-实战指南为前提 在pytorch中Debug pytorch作为一个动态图框架,与ipdb结合能为 ...
- Java 208 道面试题:第一模块答案
目前市面上的面试题存在两大问题:第一,题目太旧好久没有更新了,还都停留在 2010 年之前的状态:第二,近几年 JDK 更新和发布都很快,Java 的用法也变了不少,加上 Java 技术栈也加入了很多 ...
- 技术趋势:React vs Vue vs Angular
React.Vue 和 Angular 这两年发展状况如何?2019 年哪个技术最值得学习? 前几天 Medium 上有一位作者发表了一篇关于 React.Vue 和 Angular 技术趋势的文章( ...
- Promise学习笔记
Promise对象 Promise 表示一个异步操作的最终结果,与之进行交互的方式主要是 then 方法,该方法注册了两个回调函数,用于接收 promise 的终值或本 promise 不能执行的原因 ...
- js 实现的页面图片放大器以及 event中的诸多 x
背景: 淘宝.天猫等电商网站浏览图片时可以查看大图的功能: 思路: 思路很简单,两张图片,一张较小渲染在页面上,一张较大是细节图,随鼠标事件调整它的 left & top; 需要的知识点: o ...
- 常用CSS3
(ಥ_ಥ) 啊啊,我的胃好疼啊.感觉最近胃又开始不舒服了.啊——果然老了呢,想当初,我也是不坏金刚之身来着呢,唉,我的可怜的小胃胃 (ಥ_ಥ) 记录几个已经常见的不能再常见的css3样式. ...