kong学习之-插件

系统要求

# 安装必要的软件
yum install -y jq

基本API研究

简单路由

我们实现一个简单的uri的转换: https://ziyu0123456789.cn/favico_ico => https://mirrors.huaweicloud.com/favicon.ico


export service_url="https://mirrors.huaweicloud.com"

export SERVICE_NAME=`
echo -n $service_url | perl -pe 's/[^\w]+/_/g'
`
echo "SERVICE_NAME: $SERVICE_NAME"

# 删除绑定了某个service的路由
curl -sX GET \
--url http://localhost:8001/services/$SERVICE_NAME/routes \
| jq --raw-output '.data[].id' \
| xargs -n1 -I{} curl -sX DELETE "http://localhost:8001/routes/{}"

# 删除service
curl -sX DELETE \
--url http://localhost:8001/services/$SERVICE_NAME \
| jq '.'

# 创建service
curl -sX POST \
--url http://localhost:8001/services/ \
--data name=$SERVICE_NAME \
--data url=$service_url \
| jq '.'

# 删除绑定了某个service的路由
curl -sX GET \
--url http://localhost:8001/services/$SERVICE_NAME/routes \
| jq --raw-output '.data[].id' \
| xargs -n1 -I{} curl -sX DELETE "http://localhost:8001/routes/{}"

export SERVICE_ID=`
 curl -X GET \
 --url http://localhost:8001/services/$SERVICE_NAME \
 | jq --raw-output '.id'
`
echo "SERVICE_ID: $SERVICE_ID"

# 创建路由
export ROUTE_ID=`
curl -X POST http://localhost:8001/routes/ \
-H 'Content-Type: application/json' \
-d @- << EOF | jq --raw-output '.id'
{
    "hosts": ["ziyu0123456789.cn"],
    "protocols": ["https"],
    "paths": ["/(?<l1>[^/]+)_(?<l2>[^/]+)"],
    "service": {
        "id": "$SERVICE_ID"
    }
}
EOF
`
echo "ROUTE_ID: $ROUTE_ID"

# 创建插件
curl -X POST \
--url "http://localhost:8001/routes/$ROUTE_ID/plugins" \
--data 'name=uri-transformer' \
--data "route.id=$ROUTE_ID" \
--data "config.uri_template=/{l1}.{l2}"

# 测试路由是否正常
# 原始站点
curl -X GET \
"$SERVICE_NAME/favicon.ico" \
| base64 | head -n 1

 # 测试代理1
curl -vvv -k -X GET \
--url https://ziyu0123456789.cn:8443/favicon.ico \
 | base64 | head -n 1

 # 测试代理1
curl -k -X GET \
--url https://ziyu0123456789.cn:8443/favicon_ico \
 | base64 | head -n 1

常用的查询指令

# 列出所有service
curl -sX GET \
--url http://localhost:8001/services \
| jq '.'

# 列出所有路由
curl -sX GET \
--url http://localhost:8001/routes \
| jq '.'

# 列出所有证书
curl -sX GET \
--url http://localhost:8001/certificates \
| jq '.'

# 列出所有sni
curl -sX GET \
--url http://localhost:8001/snis \
| jq '.'


FAQ

Loading Disqus comments...
Table of Contents