一   术语

(1)Routes、Services、Upstreams、Targets关系

请求'流向':Route --> Service -->[Upstream] --> Target注意: '对应'关系Kong 的'六'大核心对象:Upstream、Target、Service、Route、Consumer、Plugins

Upstream健康检查机制

(2)Kong 网关对于一个请求的处理流程

​1) 客户端访问'kong网关ip地址' + '代理端口' + '请求路径'备注: http默认为'8000',https默认为'8443'2) 对于'client客户端'的请求,先由'Routes路由规则'匹配客户端的请求规则3) 匹配'成功(success)'后分配相应的'Service层'备注:一个'Route路由'指向一个'Service',但是一个Service可以被多个不同规则的'Routes'指向4) Service服务是一个'抽象'服务层,可以用于指向具体的'target',也可以指向'upstream'备注: Service指向upstream,upstream'指向多个target',相当于实现'负载均衡'的效果补充: Target是'后端'服务,用'ip:port'表示

kong的路由匹配规则  kong匹配优先级

(3)端口问题

​1)proxy_listen:kong网关用于'接收客户端'的流量入口,默认是'0.0.0.0:8000'2)admin_listen:提供给'管理员'使用,默认值是'127.0.0.1:8001'应用场景: 'konga的(管理)Resuful Api'的调用端口

Admin API

(4)Service

注意: 哪些是'Required'? 哪些是'Optional可选的'?1) 服务'实体'是每个'上游服务'的'抽象'2) Service 的主要属性是其URL -->'Kong应该将流量代理到的地方'补充:可以设置为'单个字符串',也可以'单独指定'其protocol、 host、 port 和 path3) Service 与 router '相关联',一个 Service 可以有许多'与之关联'的Router补充:[1]  Router 是Kong的'入口点',并定义匹配客户端请求的规则[2] 一旦 Router 匹配,Kong就会将请求'代理'到其'关联'的服务

备注: 一般'host'配置的是'upstream_name'或者'具体的target'

proxy_pass相关参考

①  tags参数解读

(5)Routes

github参考

Services和Routes的粗略解读

重点体会路由匹配规则

1) 路由实体定义规则以'匹配客户端请求';2)每个Route与一个服务相关联,一个'服务(Service)'可能有'多个与之关联'的'路由(Route)';3)匹配'给定路由'的'每个请求'都将'代理到'其关联的服务;4)Routes 和 Services 的组合[以及它们之间的'关注点分离']提供了一种强大的路由机制5)通过它可以在 Kong 中定义'细粒度的入口点',从而导致基础架构的'不同'上游服务下面图示说明: '至少'必须指定其中的'一个'

+++++++++ "创建Routes" +++++++++点击 'You can only create routes from a service page' -> 选择一个Servcie参数核心: 从请求的'哪些维度'来匹配这条'Routes'细节点: 可以'和路由route匹配'的有两类 -->'service'和'plugin'实质: 拿'用户的相关请求信息'与'Routes信息'进行匹配

常用'字段': 1)'paths(用户的请求匹配匹配该路由的路径)'   --> "必设" -->类似'nginx的location'2)'hosts(匹配该路由的域名列表)'eg : curl  -H '域名' http://kong_ip:porxy_port/url细节: -d '{"hosts":["wzj.com", "shell.com"]}'解读: hosts属性可以接受'多个值',多个值采用","分隔;也支持'前或后通配符号*'3) 'name(该条路由的标识)'、4)'service(与这条Route关联的服务)'重点: 多个'条件'同时满足,'用户的请求'才能匹配上该'Routes'大白话: 要使传入请求与路由匹配,'必须满足所有'现有字段+++++++++++ "不常用的"  +++++++++++1)methods  '限制请求方法(GET、POST、DELETE、PATCH等)'2)regex_priority 路由请求的'优先级','数字越大优先级越高',默认为0

strip_path字段和path_handling字段联动关系

​含义: 这'两个字段'设置是用来决定你访问的'真实路径'的eg:paths =/myPath,strip_path=true,path_handling=v0,最终: 你service配置的url是'http://www.baidu.com';

①  优先级的问题1

官方优先级的匹配解读  相关参考

1) kong之涉及'前缀(就是空)'和'正则(~)'匹配备注: kong不涉及'nginx 中location 复杂的 =和^~'等符号2) kong 中也是'前缀路径'总是比'正则表达式'优先评估3)regex_priority 属性从高到低'评估正则表达式'的优先级补充: 掌握'优先级'是为了'避免多个Routes同时满足(但是其对应的Service不同)',导致'异常'

②  优先级问题2

假定: 路由的规则数'相同',都只有'paths'[{"paths": ["/status/\d+"],"regex_priority": 0},{"paths": ["/version/\d+/status/\d+"],"regex_priority": 6},{"paths": ["/version"],},{"paths": ["/version/6"],}
]+++++++++++++ "假定: 请求都能匹配这些路由, 则匹配顺序" +++++++++++++客户端的'请求url': /version/6/status/10/version/\d+/status/\d+
/status/\d+
/version/6
/version说明: 最'常见'前缀的问题

③  优先级问题3

1)如果:'路由规则'数目不同出发点: '规则'越细,规则'越多',则越倾向于'匹配'匹配规则: kong将首先尝试匹配'具有最多规则'的路由2)如果:'路由规则'数量相同,优先'选择A'的场景A只有"普通"主机报头,B有一个或多个"通配符"主机报头A的'非主机头信息'比B多A至少有一个"regex"路径,而B只有"plain"路径A的'路径'比B的路径长A.created_at < B.created_at

kong3.0+新的Routes表示

(6)kong的日志

kong的日志插件

+++++++++++++ "修改日志格式"  +++++++++++++/usr/local/share/lua/5.1/kong/templates/kong_defaults.lua/usr/local/share/lua/5.1/kong/templates/nginx_kong.lua -->'修改的地方'备注: 测试环境可以修改'日志级别(debug 看匹配的路由)'或者'日志格式'帮助我们定位问题

kong配置日志格式

①  默识

1)'无法'通过修改'/usr/local/kong/nginx.conf'来修改日志2)kong网关启动时'通过模板渲染方式'生成的,每次'重启'都会'重新'生成思考: '默认'的日志格式?->实际在这里'看'/usr/local/kong/nginx-kong.conf

②   修改日志格式

# 添加log_format日志格式log_format main 'remote_addr=[$remote_addr] http_x_forward=[$http_x_forwarded_for] time=[$time_local] request=[$request] ''status=[$status] byte=[$bytes_sent] elapsed=[$request_time] upstream_connect_time=[$upstream_connect_time] upstream_header_time=[$upstream_header_time] upstream_response_time=[$upstream_response_time] upstream_addr=[$upstream_addr] upstream_status=[$upstream_status] ' 'refer=[$http_referer] ua=[$http_user_agent] gzip=[$gzip_ratio] ' 'msec=[$msec] http_host=[$http_host] http_accept=[$http_accept|$http_accept_encoding|$http_accept_language]';

③  效果展示

ping ok,curl/telnet 访问 ip+port 报not route to host  一般是firewalld防火墙

④  admin的日志

(7)Kong自添加的Header

说明: 所有'通过' kong 的请求,都会'添加'一定的 header

Key Authentication

(8)添加多个path路径

通过kong命令'Routes添加多个path路径'时,是这样的:--data 'paths[]=/myPath&paths[]=/test'注意: 而'不是加,'的方式

(9) 官方如何注入nginx指令

1) 可能通过'注入nginx指令',将'自定义的格式'添加到kong.conf文件中2) 任何带有nginx_http_、nginx_proxy_、nginx_admin_'前缀'的配置说明:kong在'启动后'将通过'删除前缀'而转换为'等效的Nginx指令',添加到nginx配置的部分3) kong.conf中常见'前缀'指令[1]  nginx_http_   -->  注入到'整个http块'指令中 说明: 在'kong.conf增加'如下配置: nginx_proxy_large_client_header_buffers=16 128k启动kong后,在'nginx-kong.conf中'的server模块'增加'如下代码:large_client_header_buffers 16 128k;[2]  nginx_proxy_  -->  注入到kong'代理端口'的服务模块中[3]  nginx_admin_  -->  注入到kong的admin 'API接口'的服务模块中

方式2:自定义日志格式

自定义变量

kong自带的kong响应头移除  headers = off

Kong(四)Kong杂谈补充相关推荐

  1. Kong 发布 Kong Brain 和 Kong Immunity,可进行智能自动化和适应性监控

    四个月前,在Kong Summit我们做了API管理已死的主题演讲,并表达了想做服务控制平台的愿景.今天,我们正朝着实现这一愿景迈出关键的一步,在Kong企业版平台上推出了人工智能和机器学习的新功能- ...

  2. kong笔记——kong/konga的搭建

    kong笔记 目录导航 本篇及以后的此系列文章皆为实战篇 版本介绍(重点,重点,一定要观察版本,防止不兼容情况!!): kong 2.5.0 konga 0.14.9 pgsql 9.6 linux ...

  3. 云原生微服务网关 Kong 和Kong 管理UI Konga快速安装攻略

    前言 在微服务架构中,由于系统和服务的细分,导致系统结构变得非常复杂, 为了跨平台,为了统一集中管理api,同时为了不暴露后置服务.甚至有时候需要对请求进行一些安全.负载均衡.限流.熔断.灰度等中间操 ...

  4. 云原生网关 Kong 和Kong 管理UI 的完全安装攻略

    1. 前言 上一文我们对Kong网关的简单介绍,今天我们来搭建Kong的环境.以便于以后对Kong的进一步了解和学习. 2. Kong支持的环境 从上图来看Kong对Linux.MacOS.容器.云 ...

  5. kong笔记——kong的权限认证插件选择参考

    kong笔记--目录导航 kong自身共提供了这么几个权限认证插件: basic auth; key auth; hmac auth; jwt auth; oauth2 auth 接下来来逐个介绍其特 ...

  6. kong笔记——kong、nginx性能压测对比

    简述 kong笔记 目录导航 前面介绍了kong的基本使用以及相关原理,那么接下来,我们需要对kong的性能做一个简单的了解. 性能压测 测试环境 机器类别及IP地址 硬件配置 操作系统 软件配置 网 ...

  7. GB9706.1检测项目详解(四)-说明书补充解释

    微信公众号:医械测试,欢迎关注,也可以查看专栏医疗器械,更多专业知识在其中. 上一篇文章我们介绍了导线.气瓶.指示灯颜色及随机文件说明,今天继续往下看,首先对上篇进行一个补充,上篇我们讲了随机文件(主 ...

  8. 设计新一代的网游——第四章(补充)

    补充 史玉柱和他的抢钱游戏 史玉柱把他的保健品抢钱机制,用到了网络游戏中,开创了免费游戏盈利的风潮. 免费是羊头,抢钱才是狗肉.他的免费游戏,甚至成了中国最贵的网络游戏.这不是诈骗是什么?用免费大制作 ...

  9. 整理Silverlight资源列表(四)——Silverlight案例补充

    在过去整理资料中,发现其中有一部分案例偏小 实用 适合于初学者开发.完全可以做参考,其中包含一些难的源码项目案例,今天整理出其中一部分发上来.因为过去资料时间有点长,可能其中有些连接的资源失效或无法访 ...

最新文章

  1. 【转】web 前端研发工程师编程能力飞升之路
  2. 李飞飞获全球最权威女性领导力奖 Athena Award,讲述推动AI多元化三大原因(视频)...
  3. 高效的密码攻击方法:彩虹表
  4. 讲解Guitar Pro打谱使用技巧
  5. Android Binder基本概念流程学习
  6. chrome session丢失_一文带你彻底读懂Cookie、Session、Token到底是什么
  7. 【数据结构与算法】之深入解析“最好买卖股票的时机含冷冻期”的求解思路与算法示例
  8. android 个推打开页面,个推android客户端点击跳到指定activity
  9. python中类似对象吗_关于性能:什么是Python中最快的(访问)类似结构的对象?
  10. ios html fixed,关于IOS的Safari浏览器fixed定位失效的那些坑
  11. 认识 ESP-IDF-v4.3+工程结构(ESP32-C3应用调整示例)
  12. JC-6、OpenCV+Tensorflow入门人工智能图像处理
  13. 【UE4 Cesium】加载离线地图
  14. GB2312 编码(转)
  15. HDI(高密度互联)PCB板
  16. 计算机毕业设计SSM电影售票管理系统【附源码数据库】
  17. 如何理解矩阵的「秩」?
  18. LVS的模式一:DR(直接路由)模式
  19. node更改html中的列表,HTMLCollection和NodeList
  20. Android Context 归因标记

热门文章

  1. 常见的HTTP方法有哪些?
  2. 低秩分解(张量分解)
  3. Installing Zune software on Windows Server 2003 SP2 (x86)
  4. 死于贫困交加的七位美国总统
  5. 戴维营第五天上课总结
  6. SSL证书格式转化的两种方法
  7. GNU编译器“.previous“的解释
  8. 关于SAN和NAS的区别!!!!
  9. ? PHP WBEM
  10. 句柄Handle的含义及使用