网关Kong路由添加说明

1. 前言

最近项目中使用了网关Kong,在部署服务和路由的过程中,遇到了部分请求返回的结果是html页面,通过js 发送ajax请求时,如果被代理的服务没有配置可跨域请求,会出现无法通过js配合请求头Host 请求的问题。

在后续研究Kong官方文档的过程中,发现,在添加路由时可通过 请求头 、 请求路径 等方式路由。

2 路由配置

2.1 请求头路由

通过Host请求头路由是Kong 代理 流量的最直接方式,而且 这是Http Host 标头的预期用途。

通过Admin API 添加路由时,hosts可接收多个值:

curl -i -X POST http://localhost:8001/routes/ \
    -H 'Content-Type: application/json' \
    -d '{"hosts":["example.com", "foo-service.com"]}'
HTTP/1.1 201 Created
...

客户端的 请求头 包含 Host: example.com 或者 Host: foo-service.com 都将通过此路由访问具体服务。

2.2 其他请求头路由

从 1.3 开始,Kong 支持通过任意 HTTP 标头进行路由,通过在请求头中添加自定义 标头 做路由。
添加自定义 请求头方式:

curl -i -X POST \
  --url http://kong:8001/services/{serviceId}/routes \
  --data "name=kong.route.client"  \
  --data "headers.client=kong" \
  --data 'paths=/client'

添加成功后,来自客户端的请求 标头包含有 Client:Kong 的将通过 kong.route.client 路由到具体的服务上

2.3 访问路径路由

kong 路由匹配的另一种方式是通过请求路径。通过Admin API 添加路由时,要实现通过请求路径路由的功能,在添加时,不能添加Host 请求标头.

添加方式:

curl -i -X POST \
  --url http://kong:18001/services/{servcieId}/routes \
  --data "name=kong.route.path"  \
  --data 'paths=/kong' \
  --data 'strip_path=false' 

如上配置,来自客户端的请求 以 /kong/*** 开头的路径 将会通过此路有访问具体服务。

strip_path 参数说明:
strip_path 使用 Boolean 属性的值,
设置成ture 时,会在匹配到客户端的请求后,配置的前缀 信息将不包含在上游的请求中。既如上所配置,strip_path=true 时,来自客户端的访问 /kong/services/list 转发到上游服务时将会是 /service/list 。路由配置 路径 /kong 前缀将不包含在 上游的请求中。

通过路径路由,可解决 部分客户端请求无法添加 host 标头的方式。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值