X-Cache-Status всегда обходится при помощи плагина Kong Proxy-cache
У меня есть служба в Конге, и я установил прокси-кеш плагин для этой службы.
curl -X POST http://localhost:8001/plugins --data "name=proxy-cache" --data "config.strategy=redis" --data 'service_id=2f0a285d-7b25-48d6-adc3-bbf28ffe5f47' --data "config.redis.host=127.0.0.1" --data "config.redis.port=6379" --data "config.redis.password=my_redis_password"
Когда я вызываю API из этого сервиса:
curl -i -X GET --url http://localhost:3002/v1/currency --header 'apikey: MY_API_KEY'
все работает правильно, но X-Cache-Status всегда обходится
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 3654
Connection: keep-alive
X-RateLimit-Limit-second: 100
X-RateLimit-Remaining-second: 99
X-Cache-Key: 3e18cdfc6e02359fb0f874efdf5788d8
X-Cache-Status: Bypass
X-Powered-By: Express
...
Как я могу отладить Обход причины?
0 ответов
Чтобы избежать обхода в X-Cache-Status, вы должны добавить этот конфиг при создании вашего плагина proxy-cache
--data "config.content_type=application/json; charset=utf-8"
Плагин proxy-cache
который поставляется в комплекте с Kong community edition, позволяет кэшировать только в памяти. Если вы хотите использовать Redis для кеширования, вам нужно будет использовать версию Kong Enterprise. Больше информации здесь
В качестве альтернативы есть плагин с открытым исходным кодом под названием kong-plugin-proxy-cache
доступно на Github. Вам нужно будет сначала установить плагин из Luarocks, а затем включить плагин в конфигурации Kong.
# Install plugin dependency
sudo luarocks install lua-resty-redis-connector
# install plugin
sudo luarocks install kong-plugin-proxy-cache
# Enable plugin in kong.conf
plugins = bundled,proxy-cache
# After enabling, you can use plugin with any service, route or consumer.
# To enable it for a service
curl -X POST http://localhost:8001/services/<service-name>/plugins \
--data "name=proxy-cache" \
--data "config.cache_ttl=300" \
--data "config.cache_control=false" \
--data "config.redis.host=<redis-host>" \
--data "config.redis.port=<redis-port>"