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 文件來改變默認監聽的端口。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM