以下只是本人学习过程的整理

 

一、概念

Ocelot是系统中对外暴露的一个请求入口,所有外部接口都必须通过这个网关才能向下游API发出请求

 

二、.Net Core搭建Ocelot

1、Nuget引用Ocelot(注意版本,我用的是16.0.1)

 

2、根目录添加配置文件Ocelot.json

{    

    “ReRoutes”: [],    

    “GlobalConfiguration”: {}

}

说明:ReRoutes是一个数组,将会包含服务器的路由配置,GlobalConfiguration则是一个全局配置项。

 

3、修改Program.cs,引用添加的配置文件

 

 

 

 

4、修改Startup.cs注册服务

 

 

 

 

三、配置文件

 

 

 

{

  //全局配置

  “GlobalConfiguration”: {

    “BaseUrl”: “http://192.168.50.118:8003/” //网关暴露的的地址。

  },

  //路由配置

  “routes”: [

    {

      ///{url}转发所有

      //”UpstreamHost”: “localhost:4023″转发特定服务

      “UpstreamPathTemplate”: “/QiantoonService/Oam”, //上游Api请求路由规则

      “DownstreamPathTemplate”: “/QiantoonService/Oam/Oam”, //网关转发到下游路由规则

      “UpstreamHttpMethod”: [ “GET”, “POST” ], //上下游支持请求方法

      “DownstreamScheme”: “http”, //下游服务配置

      “DownstreamHostAndPorts”: [

        {

          “Host”: “192.168.50.118”, //下游地址

          “Port”: 8001 //下游端口号

        }

      ]

    },

    {

      “UpstreamPathTemplate”: “/QiantoonService/SelfReg”, //上游Api请求路由规则

      “DownstreamPathTemplate”: “/QiantoonService/SelfReg/SelfReg”, //网关转发到下游路由规则

      “UpstreamHttpMethod”: [ “GET”, “POST” ], //上下游支持请求方法

      “DownstreamScheme”: “http”, //下游服务配置

      “DownstreamHostAndPorts”: [

        {

          “Host”: “192.168.50.118”, //下游地址

          “Port”: 8002 //下游端口号

        }

      ]

    }

  ]

}

四、Other

GlobalConfiguration,它是一个全局配置项,通常我们都要在这个配置项中添加一个属性BaseUrl,BaseUrl就是Ocelot服务对外暴露的Url。

"GlobalConfiguration": {"BaseUrl": "http://localhost:4727"}

ReRoutes是一个数组,其中的每一个元素代表了一个路由,而一个路由所包含的所有可配置参数如下:

{    
    "DownstreamPathTemplate": "/",    
    "UpstreamPathTemplate": "/",    
    "UpstreamHttpMethod": 
    [        
        "Get"
    ],    
    "AddHeadersToRequest": {},    
    "AddClaimsToRequest": {},    
    "RouteClaimsRequirement": {},    
    "AddQueriesToRequest": {},    
    "RequestIdKey": "",    
    "FileCacheOptions": 
    {        
        "TtlSeconds": 0,        
        "Region": ""
    },    
    "ReRouteIsCaseSensitive": false,    
    "ServiceName": "",    
    "DownstreamScheme": "http",    
    "DownstreamHostAndPorts": 
    [
        {            
        "Host": "localhost",            
        "Port": 8001,
        }
    ],    
    "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
}

Downstream 下游服务配置

UpStream 上游服务配置

Aggregates 服务聚合配置

ServiceName, LoadBalancer, UseServiceDiscovery 服务发现配置

AuthenticationOptions 服务认证配置

RouteClaimsRequirement Claims 鉴权配置

RateLimitOptions 限流配置

FileCacheOptions 缓存配置

QosOptions 服务质量与熔断配置

DownstreamHeaderTransform 头信息转发配置

 

五、注意

配置文件中“routes”关键字为新版本,旧版本关键字为“ReRoutes

此处巨坑,小杨被坑了半天

 

转载请注明出处

版权声明:本文为yangleiyu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yangleiyu/p/15047816.html