kong插件之Request Transformer

本文介绍了Kong的Request Transformer插件,该插件能够根据请求头中的参数动态添加或替换请求内容。详细阐述了插件的执行顺序,创建API的步骤,插件关联方法以及参数介绍,并提供了测试修改header的示例和更多使用教程链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

插件实现是根据客户端发送的请求头中的参数,通过请求头参数添加或替换参数内容;
插件执行顺序

remove->rename->replace->add->append

创建API

curl -i -X POST \
    --url http://localhost:8001/apis/ \
    --data 'name=example-api' \
    --data 'uris=/user' \
    --data 'upstream_url=http://test.my' \
    --header 'Accept-Charset:GBK'

返回值

{
    "created_at":1513907363000,
    "strip_uri":true,
    "id":"d62dc229-2701-46d7-831e-080906e41a72",
    "name":"example-api",
    "http_if_terminated":false,
    "preserve_host":false,
    "upstream_url":"http://test.my",
    "uris":[
        "/user"
    ],
    "upstream_connect_timeout":60000,
    "upstream_send_timeout":60000,
    "upstream_read_timeout":60000,
    "retries":5,
    "https_only":false
}

关联插件

参数介绍

consumer_id: 可选,消费者id;
config.http_method: 可选,请求方式;
config.remove.headers: 可选,删除header内容;
config.remove.querystring: 可选,删除部分URI;
config.remove.body: 可选,删除(content.request.body)请求体内容,Content-Type为以下(application/json,multipart/form-data,application/x-www-form-urlencoded)才能生效;
config.replace.headers: 可选,替换header;
config.replace.querystring: 可选,替换部分URI;
config.rename.headers: 可选,重命名header;
config.rename.querystring: 可选,重命名部分URI;
config.rename.body: 可选,重命名,参考config.remove.body;
config.replace.body: 可选,替换,参考config.remove.body,
config.add.headers: 可选,添加header内容;
config.add.querystring: 可选,添加部分URI内容;
config.add.body: 可选,添加,参考config.remove.body;
config.append.headers: 可选,追加header内容;
config.append.querystring: 可选,追加部分URI;
config.append.body: 可选,追加,参考config.remove.body;

测试修改header

curl -X POST http://localhost:8001/apis/example-api/plugins \
    --data "name=request-transformer" \
    --data "config.replace.headers='Accept-Charset:UTF-8'"

返回值

{
    "created_at":1513907423000,
    "config":{
        "remove":{
            "querystring":{

            },
            "headers":{

            },
            "body":{

            }
        },
        "replace":{
            "querystring":{

            },
            "headers":[
                "'Accept-Charset:UTF-8'"
            ],
            "body":{

            }
        },
        "append":{
            "querystring":{

            },
            "headers":{

            },
            "body":{

            }
        },
        "add":{
            "querystring":{

            },
            "headers":{

            },
            "body":{

            }
        },
        "rename":{
            "querystring":{

            },
            "headers":{

            },
            "body":{

            }
        }
    },
    "id":"e4b3eb72-9fab-4736-bbdd-22709e788367",
    "name":"request-transformer",
    "api_id":"d62dc229-2701-46d7-831e-080906e41a72",
    "enabled":true
}

更多使用方法参考教程文档

要将Docker中的Kong配置为将HTTP请求重定向到HTTPS,您可以按照以下步骤操作: 1. 准备SSL证书:首先,确保您已经获取了SSL证书的公钥和私钥。您可以购买证书或使用免费的证书颁发机构(如Let's Encrypt)来获取证书。 2. 创建Docker网络:运行以下命令创建一个Docker网络,以便Kong与其他容器进行通信: ``` $ docker network create kong-net ``` 3. 运行Kong数据库容器:运行以下命令来启动Kong所需的数据库容器: ``` $ docker run -d --name kong-database \ --network=kong-net \ -p 5432:5432 \ -e "POSTGRES_USER=kong" \ -e "POSTGRES_DB=kong" \ -e "POSTGRES_PASSWORD=kong" \ postgres:12 ``` 4. 运行Kong数据库迁移容器:运行以下命令来执行数据库迁移: ``` $ docker run --rm \ --network=kong-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-database" \ -e "KONG_PG_USER=kong" \ -e "KONG_PG_PASSWORD=kong" \ -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ kong:latest kong migrations bootstrap ``` 5. 运行Kong代理容器:现在,运行以下命令来启动Kong代理容器,并将SSL证书和其他必要配置添加到容器中: ``` $ docker run -d --name kong \ --network=kong-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-database" \ -e "KONG_PG_USER=kong" \ -e "KONG_PG_PASSWORD=kong" \ -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ -e "KONG_PROXY_LISTEN=0.0.0.0:8000, 0.0.0.0:8443 ssl" \ -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ -e "KONG_ADMIN_SSL_CERT=/path/to/ssl_cert.pem" \ -e "KONG_ADMIN_SSL_CERT_KEY=/path/to/ssl_cert_key.pem" \ -v /path/to/ssl_cert.pem:/path/to/ssl_cert.pem \ -v /path/to/ssl_cert_key.pem:/path/to/ssl_cert_key.pem \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ -p 8444:8444 \ kong:latest ``` 确保将`/path/to/ssl_cert.pem`和`/path/to/ssl_cert_key.pem`替换为您实际的证书路径。 6. 配置HTTP重定向:为了将HTTP请求重定向到HTTPS,您需要在Kong中添加一个插件。运行以下命令来添加一个重定向插件: ``` $ docker exec -it kong kong config db_import /etc/kong/kong.yml $ docker exec -it kong kong plugins enable request-transformer ``` 7. 更新Kong配置:运行以下命令来更新Kong的配置并添加HTTP重定向规则: ``` $ docker exec -it kong curl -X POST http://localhost:8001/services \ --data name=http-to-https \ --data protocol=http \ --data host=your-domain.com \ --data port=80 $ docker exec -it kong curl -X POST http://localhost:8001/services/http-to-https/routes \ --data protocols=https \ --data hosts=your-domain.com \ --data paths='/' \ --data name=http-to-https-route $ docker exec -it kong curl -X POST http://localhost:8001/routes/http-to-https-route/plugins \ --data "name=request-transformer" \ --data "config.add.headers[0]=X-Forwarded-Proto: https" ``` 请将`your-domain.com`替换为您实际的域名。 完成上述步骤后,当收到HTTP请求时,Kong将自动将其重定向到相应的HTTPS URL。请确保将SSL证书正确配置,并将`your-domain.com`替换为实际的域名。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值