zoukankan      html  css  js  c++  java
  • APISIX

    https://mp.weixin.qq.com/s/a9vXEQihClfIGxz75knrYQ

    https://mp.weixin.qq.com/s/Zyyhadg04TPdU10ET5JkJw

    https://mp.weixin.qq.com/s/MzCdBZkjTeD7Gc8GGMjXsA

    https://mp.weixin.qq.com/s/e1GpNChkz_NXMphPfkSnuw

    1、官网:https://apisix.apache.org/zh/docs/apisix/getting-started

    2、 对同一个上游,如果想添加多个插件,需要将这些插件在一个路由中设置,不可分散在多个路由,否则有的插件会不起作用

    3、在插件那里选不到proxy-rewrite,但可以在这里设置,这里就是proxy-rewrite

    1、key-auth:
     curl -i -X GET "http://172.20.5.17:9080/tst02" -H "Host: zcy.com.cn" 
    
    
    2、jwt-auth:
    ===========
    1)获取token
    curl http://172.20.5.17:9080/apisix/plugin/jwt/sign?key=user-key -i
     
    
    2)调用
    curl -i -X GET "http://172.20.5.17:9080/tst01" -H "Host: zcy.com.cn"   -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzA2NTE2NDgsImtleSI6InVzZXIta2V5In0.Azz8goZRovJgoBt-8XxCmKCjkoMRKVcqy2MpaIvnqDg'
    
    放到cookie中也行
    curl -i -X GET "http://172.20.5.17:9080/tst01" -H "Host: zcy.com.cn" --cookie jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MzA2NTE2NDgsImtleSI6InVzZXIta2V5In0.Azz8goZRovJgoBt-8XxCmKCjkoMRKVcqy2MpaIvnqDg
    
    ========
    1)获取token
    
    curl -G --data-urlencode 'payload={"uid":10000,"uname":"test"}' http://172.20.5.17:9080/apisix/plugin/jwt/sign?key=user-key -i
    返回的结果如下:
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjEwMDAwLCJrZXkiOiJ1c2VyLWtleSIsInVuYW1lIjoidGVzdCIsImV4cCI6MTYzMDY1MjA4NX0.G_enWasflwHgIZsnELvWIVBxpBNzJwo0V4X6azinBZA
    
    3、/////////    redirect
    
    curl http://127.0.0.1:9080/apisix/admin/routes/101  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
    {
        "uri": "/test/index.html",
        "host": "zcy.com.cn",
        "plugins": {
            "redirect": {
                "uri": "/test/default.html",
                "ret_code": 301
            }
        },
        "upstream": {
            "type": "roundrobin",
            "nodes": {
                "172.20.5.17:5000": 1
            }
        }
    }'
    
    curl -i http://127.0.0.1:9080/test/index.html 
    
    ======== 
    curl http://172.20.5.17:9080/apisix/admin/routes/102  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
    {
        "uri": "/test/haha.html",
        "host": "zcy.com.cn",
        "plugins": {
            "redirect": {
                "uri": "/test/yaya.html",
                "ret_code": 301
            }
        },
        "upstream": {
            "type": "roundrobin",
            "nodes": {
                "172.20.5.17:5000": 1
            }
        }
    }'
    
     curl -i -X GET "http://172.20.5.17:9080/test/haha.html" -H "Host: zcy.com.cn" 
    ===============
    redirect 和 proxy-rewrite 的区别是啥 ?
    
     curl -i -X GET "http://172.20.5.17:9080/api/tst02" -H "Host: yhb.com.cn"
    
    4、//////////////
    对同一个上游,如果想添加多个插件,需要将这些插件在一个路由中设置,不可分散在多个路由,否则有的插件会不起作用
    
    5、/////////  limit-req
    curl http://127.0.0.1:9080/apisix/admin/routes/104 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
    {
        "methods": ["GET"],
        "uris": [
        "/*"
      ],
        "host": "aaa.com.cn",
        "plugins": {
            "limit-req": {
                "rate": 1,
                "burst": 0,
                "rejected_code": 503,
                "key": "remote_addr",
                "rejected_msg": "aoh, too many, tmd!!!"
            }
        },
        "upstream": {
            "type": "roundrobin",
            "nodes": {
                "172.20.5.17:5000": 1
            }
        }
    }'
    
    rejected_msg 不起作用,不知是不是apisix的bug
    6、///////////////// traffic-split  
    通过upstream_id 设置上游不管用,通过upstream 定义是管用的
    "

    "plugins": {
    "traffic-split": {
    "disable": false,
    "rules": [{
    "weighted_upstreams": [{
    "upstream": {
    "name": "upstream_A",
    "nodes": {
    "172.20.5.17:5001": 1
    },
    "timeout": {
    "connect": 15,
    "read": 15,
    "send": 15
    },
    "type": "roundrobin"
    },
    "weight": 3
    },
    {
    "weight": 1
    }
    ]
    }]
    }
    },



    重复的缺点在 APISIX 中独立抽象了 Service 和 Upstream 两个概念来解决

    Plugin 配置可直接绑定在 Route 上,也可以被绑定在 Service 或 Consumer上。而对于同一 个插件的配置,只能有一份是有效的,配置选择优先级总是 Consumer > Route > Service。

    在 conf/config.yaml 中,可以声明本地 APISIX 节点都支持哪些插件。这是个白名单机制,不在该 白名单的插件配置,都将会被自动忽略。这个特性可用于临时关闭或打开特定插件,应对突发情况非常有效
    如果你已经在路由规则里配置了某个插件(比如在 route 的 plugins 字段里面添加了它),然后 禁用了该插件,在执行路由规则的时候会跳过这个插件

    并不是所有插件都有具体配置项,比如 prometheus 下是没有任何具体配置项,这时候用一个空的对象 标识即可


    Script 与 Plugin 互斥,且优先执行 Script ,这意味着配置 Script 后,Route 上配置的 Plugin 将不被执行

    不同 Route 规则同时绑定到一个 Service 上,这些 Route 将具有相同的上游和插件配置,减少冗余配置。

    默认情况下 Admin API 将监听 9080 端口(HTTPS 的 9443 端口)。您可以通过修改 conf/config.yaml 文件来改变默认监听的端口。

  • 相关阅读:
    Node.js+express 4.x 入门笔记
    排序系列 之 堆排序算法 —— Java实现
    排序系列 之 归并排序算法 —— Java实现
    javascript必须知道的知识要点(二)
    XGBoost安装
    ubuntu16.04查看哪些软件可更新
    禁止ubuntu更新内核
    ubuntu安装nvidia显卡驱动问题
    禁用ubuntu16.04的guest账户
    远程登录jupyter notebook
  • 原文地址:https://www.cnblogs.com/testzcy/p/15209485.html
Copyright © 2011-2022 走看看