Kong-plugin
Kongs plugin ondersteunt vier dimensies, de uitvoeringsvolgorde is van boven naar beneden, en het moet worden opgemerkt dat als dezelfde plugin in verschillende dimensies wordt geconfigureerd, deze slechts één keer wordt uitgevoerd:
- Pas de API plus consumentenmix toe;
- Toegepast op consumenten;
- Toegepast in de API;
- Wereldwijd toegepast;
Ook ondersteunen niet alle plugins het definiëren van consumenten
Voeg een extra API toe voor testen Voeg een nieuwe interface toe:
{ "created_at": 1515055457572, "strip_uri": waar, "ID": "A99919D1-0770-40A1-81A9-E3C31fd9d282", "naam": "veer-laars-consul-service2", "Methoden": [ "GA" ], "http_if_terminated": onwaar, "preserve_host": onwaar, "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004", "URIS": [ "/user" ], "upstream_send_timeout": 60.000, "upstream_connect_timeout": 60.000, "upstream_read_timeout": 60.000, "herkansingen": 5, "https_only": vals
}
Voeg stoom toe
{ "created_at": 1515055993113, "Orderlist": [ 41, 28, 44, 14, 79, 38, 30, 69, 15, 88, 72, 53, 89, 47, 81, 43, 60, 91, 92, 100, 98, 55, 12, 40, 9, 31, 84, 24, 36, 39, 96, 74, 6, 8, 93, 99, 78, 34, 49, 37, 61, 76, 33, 35, 32, 77, 70, 26, 52, 87, 73, 23, 57, 25, 17, 90, 62, 82, 19, 75, 50, 4, 51, 42, 65, 66, 63, 3, 1, 68, 94, 67, 20, 80, 54, 7, 5, 16, 85, 13, 46, 10, 97, 22, 48, 11, 27, 86, 18, 59, 83, 21, 56, 95, 2, 64, 58, 71, 45, 29 ], "id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4", "naam": "spring-boot-consul-service2.service.dc1.consul", "Slots": 100
}
Voeg doelen toe
Tagets-informatie
{ "totaal": 3, "Data": [ { "created_at": 1515056103599, "ID": "994e7886-3E48-45CB-80AD-3F7918ede007", "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4", "doelwit": "192.168.0.186:17004", "gewicht": 15 }, { "created_at": 1515056109570, "ID": "03B477ee-A69D-49Ee-9892-276F451C373C", "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4", "Doelwit": "192.168.0.185:17004", "gewicht": 15 }, { "created_at": 1515056112730, "id": "8ace8d83-4504-4334-ad04-f0b536963df9", "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4", "Doelwit": "192.168.0.184:17004", "gewicht": 15 } ]
}
De huidige lijst van API's is als volgt:
{ "totaal": 2, "Data": [ { "created_at": 1515055457572, "strip_uri": waar, "ID": "A99919D1-0770-40A1-81A9-E3C31fd9d282", "naam": "veer-laars-consul-service2", "Methoden": [ "GA" ], "http_if_terminated": onwaar, "https_only": onjuist, "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004", "URIS": [ "/user" ], "preserve_host": onwaar, "upstream_connect_timeout": 60.000, "upstream_read_timeout": 60.000, "upstream_send_timeout": 60.000, "herkansingen": 5 }, { "created_at": 1514995615974, "strip_uri": waar, "ID": "B8431831-6A77-434e-ac4A-7e379550714f", "naam": "veer-laars-consul-dienst", "Methoden": [ "GA" ], "http_if_terminated": onwaar, "https_only": onjuist, "upstream_url": "http://spring-boot-consul-service.service.dc1.consul:17003", "URIS": [ "/service" ], "preserve_host": onwaar, "upstream_connect_timeout": 60.000, "upstream_read_timeout": 60.000, "upstream_send_timeout": 60.000, "herkansingen": 5 } ]
}
De toegangsinterfaces geven het volgende terug:
{ "msg": "oké", "date": { "score": 42, "naam": "boom", "id": 1, "leeftijd": 12, "nowTime": 1515060166929, "info": "/checkUser, host:192.168.0.186, service_id:application-1700417004" }, "code": 200
} { "msg": "oké", "date": { "score": 505, "naam": "boom", "id": 1, "leeftijd": 12, "nowTime": 1515060402392, "info": "/checkUser, host:192.168.0.184, service_id:application-1700317003" }, "code": 200
} Voeg de Key-Auth plugin toe
Open de key-auth plugin
{ "created_at": 1515066239000, "config": { "key_in_body": onwaar, "run_on_preflight": waar, "anoniem": "", "hide_credentials": onwaar, "key_names": [ "Apikey" ] }, "id": "78c519d3-11f7-4cdf-b038-9f17f1a83427", "ingeschakeld": waar, "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282", "naam": "sleutel-auth"
} Vervolgens opent je de interface met een foutmelding als deze:
Verwijder de key-auth plugin
Bekijk de API-binding-plugin
Voeg de rate-limiting plugin toe die de snelheid beperkt
Output
{ "created_at": 1515068825000, "config": { "minuut": 10, "beleid": "cluster", "redis_timeout": 2000, "hide_client_headers": onwaar, "tweede": 2, "limit_by": "consument", "redis_port": 6379, "redis_database": 0, "fault_tolerant": waar }, "ID": "482C627F-4041-4320-9B2F-0CC7722B92EA", "naam": "tariefbeperkend", "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282", "ingeschakeld": waar
} Wanneer de toegangsinterface de limiet overschrijdt, worden de volgende retouren ontvangen:
Terugkeer
{ "message": "API-snelheidslimiet overschreden"
} Er zijn echter nog steeds enkele problemen, omdat het berichtformaat is opgelost, het uitvoerformaat niet consistent is met de backend-service en aangepaste berichtformaten ondersteund moeten worden.
Kong wijzigt de uitzonderingsretourwaarde Het systeem van de dienst is bijvoorbeeld het geïntegreerde berichtformaat als volgt:
{ "code": 200, "msg": "oké", "data": {xxx}
} We willen ook dat de uitzonderingsterugkeer van Kong hetzelfde format blijft als hierboven. Dan kunnen we de broncode van Kong direct aanpassen, wat eigenlijk heel eenvoudig is.
Begin met het downloaden van de broncode
#下载kong插件源码
Git-kloongit@github.com:Kong/kong.git
Zoek de uitvoercode om aan te passen
De uitvoercode bevindt zich in kong/kong/tools/responses.lua, open deze voor bewerking.
Sla op, en compileer dan
[root@tree81 Kong]# Luarocks maken kong 0.11.2-0 is nu geïnstalleerd in /usr/local (licentie: MIT) Lanceren, probeer het opnieuw
Ververs het adres snel meerdere keren achter elkaar:De hyperlink-login is zichtbaar.Krijg een foutmelding:
{ "code": 429, "msg": "API-snelheidslimiet overschreden"
} Klaar, perfect :) |