• kong的preserve_host和strip_uri解析


    • 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

    uris strip_uri INCOMING REQUEST UPSTREAM 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
  • 相关阅读:
    linux 操作命令
    Linux 安装问题
    margin和text-align实现水平居中的区别
    javascript关键字typeof、instanceof、constructor判断类型
    jquery经常用到的代码段
    Ubuntu安装Chrome浏览器及解决启动no-sandbox问题
    github基本使用---从零开始
    Jquery的load加载本地文件出现跨域错误的解决方案
    meta标签中设置以极速模式打开网页
    原生js动态创建文本内容的几种方式
  • 原文地址:https://www.cnblogs.com/mentalidade/p/6847004.html
Copyright © 2020-2023  润新知