本篇文章就是使用总结,针对 kong网关的原理网上很多。
一:kong网关版本 kong-3.5 开源版本
二:kong网关安装
Installation Options - v3.5.x | Kong Docs
三:通过kong manager管理 kong网关
1)开启 kong manager
Enable Kong Manager - v3.5.x | Kong Docs
开启参数信息
admin_gui_listen = 10.19.9.17:8002
admin_gui_url = http://10.19.9.17:8002/manager
admin_gui_path = /manager
重启 kong 网关
kong restart
2) 使用 kong manager
浏览器打开 kong manager 页面
3)添加 kong gateway service
点击 Gateway services ---> New Gateway Service
Name: 对外访问域名
Tags: 标签自定义,可为空
Protocol : 对外通信协议 此处选择 http
Host: 上游服务器 upstreams 主机,此处区分大小写
Path: path路径 默认为/
Port: 对外端口,kong网关默认对外为 8000 和 8443 ssl
Retries: 对上游服务器重试次数
Connection Timeout: 对上游服务器连接超时时长,默认为 60000毫秒
Write Timeout: 对上游服务器写超时时长,默认为 60000毫秒
Read Timeout:对上游服务器读超时时长,默认为 60000毫秒
4)添加 upstreams
upstreams ---> new upstream
Name: 此处可以下拉选择
Host Header: 此处当后端 targets为域名时可配置后端服务域名信息,如过为 IP 地址可以省略不写
Client Certificate:上游服务器证书选择
tags: 标签自定义
AIgorithm : 负载均衡方式
Round Robin: 负载均衡
Least Connections: 最少连接
Consistent Hashing: 一致性 hash
Latency:
Slots : 盐 默认即可
Hashon: 是否开启一致性回话保持
None: 不开启
Consumer: 基于用户
IP: 基于访问 IP
Header: 基于头部信息
Cookie: 基于 cookie
Path: 基于访问路径
Query Argument: 基于查询参数
Hash Fallback: 如果主 Hash on 没有数据传入,使用下面替代
5)Upstrems里添加 Targets
点击 Upstrems 下 对应的 Upstreams Name ---> 点击 Targets ---> New Target
Target Address: 上游服务器 IP + Port 端口必填,默认为 8000
Weight: 服务器权重
6)添加路由 router
Gateway Service --> 点击网关Name --> Routes --> New Route
Name: 路由名称 自定义
Tags: 标签
Protocols: 路由协议
Paths: 匹配路由
Hosts: 与此路由匹配的主机域名
Methods: 允许的访问方式,默认为所有
Headers: 访问头部信息自定义
Strip Path: 匹配路径/ 是否截掉 默认为截取
Preserve Host:
Request buffering: 请求缓存
Response buffering: 响应缓存
以上 kong service ---> kong upstrem ---> kong route 三个模块全部配置完成即可正常访问后端服务。
四: 路由添加组件
1)rate limiting 组件
针对组件分两种,针对 Service, 针对 Servie下的 Routes
此处介绍针对 Routes添加 组件
Routes --> Route name --> Plugins --> New Plugin --> rate-limiting
Global: 针对所有 Gateway services Routes Consumers 生效,一般不使用全局生效模式
Scoped: 针对单独一项生效,此处针对 单一Routes生效
Gateway Service: 选择生效的 Gateway 当选择 Routes下插件生效时,此处默认为空
Route: 选择对应的 Routes 生效
Consumer: 没有定义 Consumer时此处为空
day: 每天限制访问的数量
error_code: 超出限制提示响应码
error_message: 超出限制提示信息
fault_tolerant: 过错宽容,当后端数据库连接失败,默认限速自动失效
hour: 一小时允许访问次数
limit_by: 针对客户请求类型 进行限制
minute: 一分钟允许访问次数
month: 一个月允许访问次数
path: 访问路径现在 默认为空即可
policy: 访问次数统计存储选择,生产环境建议选择 redis 必选项,不能为空
second: 秒并发次数 限制频率主要修改此处的值
sync_rate: 计数器同步到后端存储服务器
year: 限制一年访问的次数
此处配置每秒允许访问次数为 2, 测试方式,快速点击刷新访问路径,当每秒访问次数大于 2 时,出现下面速率限制提示。
2)ip-restriction 组件
此组件为防火墙组件
上面配置同 rate-limit
主要为下面白/黑名单配置
allow: 白名单
deny: 黑名单
message: 消息提示
status: 状态吗
测试
3)key-auth 组件
key_in_body: 验证值是否在 body主体
key_in_header: 验证值是否在 header头部
key_in_query: 验证值是否在查寻请求中
key_names: 为 key 的 name 需要提前在 consumers 里定义 value
run_on_preflight: 是否允许 options 请求类型
在 consumers里定义 keyapi
keyapi 里定义 value
测试
当 key的值错误时提示 认证失败
版权归原作者 Mr.Lilh 所有, 如有侵权,请联系我们删除。