3-kong的preserve_host和strip_uri解析

Posted robinunix

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3-kong的preserve_host和strip_uri解析相关的知识,希望对你有一定的参考价值。

原文参考:https://www.cnblogs.com/mentalidade/p/6847004.html

  • preserve_host:当代理的时候,k代理时,Kong的默认行为是将上游请求的Host头设置为API的upstream_url属性的主机名。这个参数接受一个boolean值。
    当为FALSE时,如下:
{
    "name": "my-api",
    "upstream_url": "http://my-api.com",
    "hosts": ["service.com"],
}

客户端请kong的请求头:

GET / HTTP/1.1
Host: service.com

kong将从upstream_url中提取主机名作为HOST的值去请求上游服务。如下:

GET / HTTP/1.1
Host: my-api.com

当明确的制定为true时,

{
    "name": "my-api",
    "upstream_url": "http://my-api.com",
    "hosts": ["service.com"],
    "preserve_host": true
}

还是上面的那个相同的客户端请求,kong将发送如下的请求头去请求上游服务。

GET / HTTP/1.1
Host: service.com

即客户端请求的HOST通过kong透传到上游服务,而不是从upstream_url提取。

  • strip_uri:指定uri前缀去匹配一个API,但是不包含在上游的请求中。这个参数接收一个boolean的值。
{
    "name": "my-api",
    "upstream_url": "http://my-api.com",
    "uris": ["/service"],
    "strip_uri": true
}

启用这个属性,当kong代理这个API时,在上游请求的url中将不包含匹配uri前缀。

GET /service/path/to/resource HTTP/1.1
Host:

发送到上游服务时:(preserve_host默认为false,Host从upstream_url提取,strip_uri为true,则请求进来的url将跳过url对应的匹配,然后代理到上游服务器)

GET /path/to/resource HTTP/1.1
Host: my-api.com

代理一个api通过它的request_path的值
如果你想要配置你的apis,让kong路由进来的请求通过请求的uri。

下面例子:INCOMING REQUEST表示请求kong的,UPSTREAM REQUEST像上游服务器请求的uri

urisstrip_uriINCOMING REQUESTUPSTREAM REQUEST
/mockbin false /some_path not proxied
/mockbin false /mockbin /mockbin
/mockbin false /mockbin/some_path /mockbin/some_path
/mockbin true /some_path not proxied
/mockbin true /mockbin /
/mockbin true /mockbin/some_path /some_path
 

以上是关于3-kong的preserve_host和strip_uri解析的主要内容,如果未能解决你的问题,请参考以下文章

3.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- Kong 的管理运维

kong 搭建安装

AfterShip 亿级流量 API 网关的演进

又肝了下微服务 API 网关“金刚”,也是蛮香的~

if语句被忽略[重复]

jboss 错误:java.lang.NoSuchMethodError:org.hibernate.internal.CoreMessageLogger.debugf(Ljava/lang/Stri