使用Ocelot做网关
1首先创建一个json的配置文件,文件名随便取,我取Ocelot.json
这个配置文件有两种配置方式,第一种,手动填写 服务所在的ip和端口;第二种,用Consul进行服务发现
第一种如下:
{
"ReRoutes": [
{
//转发处理格式
"DownstreamPathTemplate": "/api/{url}",
"DownstreamScheme": "http",
//手动指明ip和端口号
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port":
}
],
//请求格式
"UpstreamPathTemplate": "/Ocelot_Consul_Service/{url}",
"UpstreamHttpMethod": [ "Get", "Post" ]
}
]
//例如,我的Ocelot ip是127.0.0.1 端口是8888的情况下,
//我请求的是localhost:8888/Ocelot_Consul_Service/values
//会被转到localhost 的6001端口 6001端口对应的是 Ocelot_Consul_Service 对应的webapi
//请求转后的路径是:localhost:6001/api/Ocelot_Consul_Service/values
}
第二种如下:
{
"ReRoutes": [
{
"DownstreamPathTemplate": "/api/{url}",
"DownstreamScheme": "http",
"UpstreamPathTemplate": "/Ocelot_Consul_Service/{url}",
"UpstreamHttpMethod": [ "Get", "Post" ],
//指明服务名
"ServiceName": "Ocelot_Consul_Service",
//指明负载平衡方式
"LoadBalancerOptions": {
"Type": "RoundRobin" //轮询
},
//使用服务发现
"UseServiceDiscovery": true
}
],
//全局配置
"GlobalConfiguration": {
//服务发现的提供者
"ServiceDiscoveryProvider": {
//ip
"Host": "localhost",
//端口
"Port": ,
//由Consul提供服务发现
"Type": "Consul"
}
}
}
2.接下来我们要安装Ocelot
install-package Ocelot
3.安装完毕 要在Program.cs文件中使用第一步中创建的json文件,把它读到配置里面去。
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
//解析出从控制台传入的ip和端口号
var config = new ConfigurationBuilder()
.AddCommandLine(args)
.Build();
string ip = config["ip"];
string port = config["port"]; return WebHost.CreateDefaultBuilder(args)
.UseUrls($"http://{ip}:{port}")
//注册应用配置
.ConfigureAppConfiguration((hostingContext,builder)=> {
//false 此文件是否是可选的,不是!true 如果此文件被修改了是否重新加载 是!
builder.AddJsonFile("Ocelot.json", false, true);
})
.UseStartup<Startup>();
}
4.在启动类(startup.cs)文件中添加Ocelot服务
public void ConfigureServices(IServiceCollection services)
{
//这个AddOcelot方法是Ocelot包给IServiceCollection扩展的方法
//如果不使用Consul进行服务发现,只需要services.AddOcelot(configuration)即可
//但是如果使用Consul进行服务发现 后面还要AddConsul()
//要使用AddConsul()必须安装包 Ocelot.Provider.Consul
services.AddOcelot(configuration).AddConsul();
}
一定要注意第4步,使用Consul做服务发现要安装 Ocelot.Provider.Consul 包 并AddConsul()。在实际中 我们要尽量要用Consul进行服务发现。
附上Ocelot文档截图一张如下:

使用Ocelot做网关的更多相关文章
- .Netcore 2.0 Ocelot Api网关教程(7)- 限流
本文介绍Ocelot中的限流,限流允许Api网关控制一段时间内特定api的总访问次数.限流的使用非常简单,只需要添加配置即可. 1.添加限流 修改 configuration.json 配置文件,对 ...
- ASP.NET Core on K8S学习之旅(13)Ocelot API网关接入
本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 上一篇介绍了Ingress的基本概念和Nginx Ingress的基本配置和使 ...
- Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(四)
在上一讲中,我们已经完成了一个完整的案例,在这个案例中,我们可以通过Angular单页面应用(SPA)进行登录,然后通过后端的Ocelot API网关整合IdentityServer4完成身份认证.在 ...
- Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(一)
好吧,这个题目我也想了很久,不知道如何用最简单的几个字来概括这篇文章,原本打算取名<Angular单页面应用基于Ocelot API网关与IdentityServer4+ASP.NET Iden ...
- Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(二)
上文已经介绍了Identity Service的实现过程.今天我们继续,实现一个简单的Weather API和一个基于Ocelot的API网关. 回顾 <Angular SPA基于Ocelot ...
- Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(三)
在前面两篇文章中,我介绍了基于IdentityServer4的一个Identity Service的实现,并且实现了一个Weather API和基于Ocelot的API网关,然后实现了通过Ocelot ...
- 微服务(入门三):netcore ocelot api网关结合consul服务发现
简介 api网关是提供给外部调用的统一入口,类似于dns,所有的请求统一先到api网关,由api网关进行指定内网链接. ocelot是基于netcore开发的开源API网关项目,功能强大,使用方便,它 ...
- .Netcore 2.0 Ocelot Api网关教程(6)- 配置管理
本文介绍Ocelot中的配置管理,配置管理允许在Api网关运行时动态通过Http Api查看/修改当前配置.由于该功能权限很高,所以需要授权才能进行相关操作.有两种方式来认证,外部Identity S ...
- .Netcore 2.0 Ocelot Api网关教程(2)- 路由
.Netcore 2.0 Ocelot Api网关教程(1) 路由介绍 上一篇文章搭建了一个简单的Api网关,可以实现简单的Api路由,本文介绍一下路由,即配置文件中ReRoutes,ReRoutes ...
随机推荐
- AE要素选择(点选和拉框选择)
原文 AE要素选择(点选和拉框选择) 选择一个要素或者一个要素集(FeatureSelection)的方法很多,如IMap::SelectByShape.ILayer::search.IFeature ...
- [RxJS] Stopping a shared observable execution
ConnectableObservable has the connect() method to conveniently dictate the start of the shared execu ...
- context.getSystemService的简单说明
在android开发过程中这种方法一定不会陌生,比方我们在获取WindowManager和LayoutInflater对象的时候就须要我们调用这种方法.这种方法在context这个抽象类的一个抽象方法 ...
- iOS8新特性
1. App Extension Programming Guide 2.LocalAuthentication.framework - Touch ID Authentication 3.Local ...
- ZOJ 2405 Specialized Four-Digit Numbers
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1405 要求找出4位数所有10进制.12进制.16进制他们各位数字之和相等. # ...
- [Angular2 Router] Resolving route data in Angular 2
From Article: RESOLVING ROUTE DATA IN ANGULAR 2 Github If you know Anuglar UI router, you must know ...
- 调试 之gdb thread命令 与 ltrace/strace
我们可以通过 1) gdb prog_name -> r 用在逐步调试自己的程序时 2) gdb -> attach process_id 正 ...
- 如何查看Outlook邮件的源码(包括ip)
如何查看Outlook邮件的源码(包括ip) 一.总结 1.右键点击邮件可出现 view message details. 二.如何查看Outlook邮件的源码(包括ip) 1.点收件箱 2.鼠标右键 ...
- [Angular] Working with FormArray
'FormArray' can work with array of 'FormGroup' or 'FormControl'. form = new FormGroup({ stock: new F ...
- [NPM] Make npm scripts cross-environment friendly
Unfortunately not all shell commands work across various environments. Two main techniques to suppor ...