{"id":13739532,"url":"https://github.com/heroku/heroku-kong","last_synced_at":"2026-01-14T14:34:01.451Z","repository":{"id":66022717,"uuid":"48390183","full_name":"heroku/heroku-kong","owner":"heroku","description":"🐒 Kong API gateway as a Heroku app","archived":true,"fork":false,"pushed_at":"2022-02-12T12:42:57.000Z","size":272,"stargazers_count":85,"open_issues_count":1,"forks_count":64,"subscribers_count":89,"default_branch":"master","last_synced_at":"2025-06-09T05:46:24.341Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://konghq.com/","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/heroku.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2015-12-21T19:32:09.000Z","updated_at":"2025-05-03T06:47:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"6c241960-a12a-44b1-ae77-bb51825e2111","html_url":"https://github.com/heroku/heroku-kong","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/heroku/heroku-kong","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heroku%2Fheroku-kong","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heroku%2Fheroku-kong/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heroku%2Fheroku-kong/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heroku%2Fheroku-kong/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heroku","download_url":"https://codeload.github.com/heroku/heroku-kong/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heroku%2Fheroku-kong/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28423564,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T13:30:50.153Z","status":"ssl_error","status_checked_at":"2026-01-14T13:29:08.907Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T04:00:34.896Z","updated_at":"2026-01-14T14:34:01.429Z","avatar_url":"https://github.com/heroku.png","language":"Lua","funding_links":[],"categories":["📦 Legacy \u0026 Inactive Projects","Tools"],"sub_categories":["Distributions"],"readme":"Kong as a Heroku app\n====================\n\n⚠️ **This project is no longer maintained.**\n\nDeploy [Kong 1.0](https://konghq.com/blog/kong-1-0-ga/) clusters to Heroku Common Runtime and Private Spaces using the [Kong buildpack](https://github.com/heroku/heroku-buildpack-kong/).\n\n⏫ **Upgrading from an earlier version?** See [Upgrade Guide](#user-content-upgrade-guide).\n\n🔬 This is a community proof-of-concept, [MIT license](LICENSE), provided \"as is\", without warranty of any kind.\n\n[![Deploy to Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)\n\n* [Purpose](#user-content-purpose)\n* [Usage](#user-content-usage)\n  * [Deploy](#user-content-deploy)\n  * [Connect local to Heroku app](#user-content-connect-local-to-heroku-app)\n  * [Admin console](#user-content-admin-console)\n  * [Admin API](#user-content-admin-api)\n    * [The API Key](#user-content-admin-api-key)\n    * [Accessing](#user-content-accessing-the-external-admin-api)\n    * [Disabling](#user-content-disabling-the-external-admin-api)\n  * [Terraform](#user-content-terraform)\n  * [Upgrade guide](#user-content-upgrade-guide)\n* [Customization](#user-content-customization)\n  * [Configuration](#user-content-configuration)\n  * [Kong plugins \u0026 additional Lua modules](#user-content-kong-plugins--additional-lua-modules)\n* [Demos](#user-content-demos)\n  * [API Rate Limiting](#user-content-demo-api-rate-limiting)\n  * [Custom plugin: hello-world-header](#user-content-demo-custom-plugin-hello-world-header)\n  * [Custom plugin: API translation, JSON→XML](#user-content-demo-custom-plugin-api-translation-jsonxml)\n* [Development Notes](#user-content-dev-notes)\n  * [Learning the Language of Kong](#user-content-learning-the-language-of-kong)\n  * [Programming with Lua](#user-content-programming-with-lua)\n  * [Local Development](#user-content-local-development)\n    * [Requirements](#user-content-requirements)\n    * [Clone \u0026 connect](#user-content-clone--connect)\n    * [Setup](#user-content-setup)\n    * [Running](#user-content-running)\n    * [Testing](#user-content-testing)\n\nPurpose\n-------\nKong is an extensible [web proxy](https://en.m.wikipedia.org/wiki/Proxy_server) based on [OpenResty](http://openresty.org/en/), a web app framework built on the embedded [Lua language](http://www.lua.org) capabilities of the [Nginx web server](http://nginx.org/en/).\n\nWith Heroku, Kong may be used for a variety of purposes. A few examples:\n\n  * unify access control \u0026 observability for a suite of microservices\n  * enforce request rate \u0026 size limits globally, based on the endpoint, or the authenticated consumer\n  * create a single management point for routing requests based on DNS hostnames, URL paths, and HTTP headers\n\n🦍 Visit [Kong HQ](https://konghq.com), the official resource for everything Kong.\n\nUsage\n-----\n\n### Deploy\n\nUse the deploy button to create a Kong app in your Heroku account:\n\n[![Deploy to Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)\n\n### Connect local to Heroku app\n\nTo make changes to the Kong app's source, clone and connect this repo (or your own fork) to the Heroku app:\n\n```bash\ngit clone https://github.com/heroku/heroku-kong.git\ncd heroku-kong\n\n# Use the name of the Heroku app:\nheroku git:remote --app $APP_NAME\nheroku info\n```\n\n### Admin console\n\nTo gain local console access to Kong deployed on Heroku, see [ADMIN](ADMIN.md).\n\nConsole access is primarily useful for performing `kong` CLI commands against the deployed app. Most administrative features do not require console access and instead are available through the Kong Admin API.\n\n### Admin API\n\nWhen this app is deployed to Heroku, it automatically provisions a protected, external-facing [loopback proxy](https://docs.konghq.com/1.0.x/secure-admin-api/#kong-api-loopback) to [Kong's Admin API](https://docs.konghq.com/1.0.x/admin-api/), secured by the `KONG_HEROKU_ADMIN_KEY` config var.\n\n#### Admin API key\n\n`KONG_HEROKU_ADMIN_KEY` is generated automatically when this app is [deployed using the automated app setup](#user-content-deploy).\n\nYou can explicitly set a new admin key value:\n\n```bash\nheroku config:set KONG_HEROKU_ADMIN_KEY=xxxxx\n```\n\n⚠️ **Always set a unique, cryptographically strong key value.** A weak admin key may result in the proxy being compromised and abused by malicious actors.\n\n#### Accessing the external Admin API\n\nMake HTTPS requests using a tool like [`curl`](https://curl.haxx.se) or [Paw.cloud](https://paw.cloud):\n\n1. Base URL of the app's [Kong Admin API](https://docs.konghq.com/1.0.x/admin-api/) is `https://$APP_NAME.herokuapp.com/kong-admin`\n2. Set the current [admin key](#user-content-admin-api-key) in the `apikey` HTTP header\n\nFor example, set the current admin key into a local shell variable:\n\n```bash\nKONG_HEROKU_ADMIN_KEY=`heroku config:get KONG_HEROKU_ADMIN_KEY`\n```\n\nNow use the following HTTP request style to interact with the [Kong's Admin API](https://docs.konghq.com/1.0.x/admin-api/):\n\n✏️ *Replace the variable `$APP_NAME` with value for your unique deployment.*\n\n```bash\ncurl -H \"apikey: $KONG_HEROKU_ADMIN_KEY\" https://$APP_NAME.herokuapp.com/kong-admin/status\n```\n\n#### Disabling the external Admin API\n\nIf you prefer to only use the [console-based Admin API](ADMIN.md), then this externally-facing proxy can be disabled:\n\n```bash\ncurl -H \"apikey: $KONG_HEROKU_ADMIN_KEY\" https://$APP_NAME.herokuapp.com/kong-admin/services/kong-admin/routes\n# For the returned Route's `id`,\ncurl -H \"apikey: $KONG_HEROKU_ADMIN_KEY\" -X DELETE https://$APP_NAME.herokuapp.com/kong-admin/routes/$ROUTE_ID\n# Now there's no longer admin access!\n# Finally, clear out the old admin key value.\nheroku config:unset KONG_HEROKU_ADMIN_KEY\n```\n\n### Terraform\n\nKong may be provisioned and configured on Heroku using [Hashicorp Terraform](https://www.terraform.io) and a third-party [Kong provider](https://github.com/kevholditch/terraform-provider-kong).\n\nSee these examples of [Using Terraform with Heroku](https://devcenter.heroku.com/articles/using-terraform-with-heroku):\n\n* [Common Runtime microservices with a unified gateway](https://github.com/mars/terraform-heroku-common-kong-microservices)\n* [Private Spaces microservices with a unified gateway](https://github.com/mars/terraform-heroku-enterprise-kong-microservices)\n\n### Upgrade guide\n\n🚨 **Potentially breaking changes.** Please attempt upgrades on a staging system before upgrading production.\n\n#### The buildpack\n\n[Buildpack v6.0.0](https://github.com/heroku/heroku-buildpack-kong/releases) supports rapid deployments using a\npre-compiled Kong binary. A pre-existing, customized app may require changes continue functioning, if the app explicitly uses the `/app/.heroku` directory prefix.\n\n[Buildpack v7.0.0-rc\\*](https://github.com/heroku/heroku-buildpack-kong/releases) supports Kong 1.0 release candidates. The \"rc\" releases only support upgrading from Kong 0.14, not earlier versions or other release candidates.\n\n[Buildpack v7.0.0](https://github.com/heroku/heroku-buildpack-kong/releases) supports Kong 1.0.\n\n▶️ See [UPGRADING the buildpack](https://github.com/heroku/heroku-buildpack-kong/blob/master/UPGRADING.md).\n\n#### Kong\n\nFirst, see [Kong's official upgrade path](https://github.com/Kong/kong/blob/master/UPGRADE.md).\n\nThen, take into account these facts about how this Kong on Heroku app works:\n\n* this app automatically runs `kong migrations up` for every deployment\n* you may prevent the previous version of Kong from attempting to use the new database schema during the upgrade (this will cause downtime):\n   1. check the current formation size with `heroku ps`\n   1. scale the web workers down `heroku ps:scale web=0`\n   1. [perform the upgrade](https://github.com/Kong/kong/blob/master/UPGRADE.md)\n   1. allow release process to run\n   1. finally restart to the original formation size `heroku ps:scale web=$PREVIOUS_SIZE`\n* once Kong 1.0 is successfully deployed, execute: `\nheroku run \"kong migrations finish --conf /app/config/kong.conf\"`\n\n🏥 Please [open an issue](https://github.com/heroku/heroku-kong/issues), if you encounter problems or have feedback about this process.\n\n\nCustomization\n-------------\nKong may be customized through configuration and plugins.\n\n### Configuration\n\nKong is automatically configured at runtime with a `.profile.d` script:\n\n  * renders the `config/kong.conf` file based on:\n    * the customizable [`config/kong.conf.etlua`](config/kong.conf.etlua) template\n    * values of [config vars, as defined in the buildpack](https://github.com/heroku/heroku-buildpack-kong#user-content-environment-variables)\n  * exports environment variables\n    * see: `.profile.d/kong-env` in a running dyno\n\nAll file-based config may be overridden by setting `KONG_`-prefixed config vars, e.g. `heroku config:set KONG_LOG_LEVEL=debug`\n\n👓 See: [Kong 1.0 Configuration Reference](https://docs.konghq.com/1.0.x/configuration/)\n\n\n### Kong plugins \u0026 additional Lua modules\n\n👓 See: [buildpack usage](https://github.com/heroku/heroku-buildpack-kong#user-content-usage)\n\n\nDemos\n-----\nUsage examples and sample plugins are includes with this Heroku Kong app.\n\n### Demo: [API Rate Limiting](https://getkong.org/plugins/rate-limiting/)\n\nRequest [this Bay Lights API](https://kong-proxy-public.herokuapp.com/bay-lights/lights) more than five times in a minute, and you'll get **HTTP Status 429: API rate limit exceeded**, along with `X-Ratelimit-Limit-Minute` \u0026 `X-Ratelimit-Remaining-Minute` headers to help the API consumers regulate their usage.\n\nTry it in your shell terminal:\n```bash\ncurl --head https://kong-proxy-public.herokuapp.com/bay-lights/lights\n# HTTP/1.1 200 OK\ncurl --head https://kong-proxy-public.herokuapp.com/bay-lights/lights\n# HTTP/1.1 200 OK\ncurl --head https://kong-proxy-public.herokuapp.com/bay-lights/lights\n# HTTP/1.1 200 OK\ncurl --head https://kong-proxy-public.herokuapp.com/bay-lights/lights\n# HTTP/1.1 200 OK\ncurl --head https://kong-proxy-public.herokuapp.com/bay-lights/lights\n# HTTP/1.1 200 OK\ncurl --head https://kong-proxy-public.herokuapp.com/bay-lights/lights\n# HTTP/1.1 429\n```\n\nHere's the whole configuration for this API rate limiter:\n\n```bash\ncurl http://localhost:8001/services/ -i -X POST \\\n  --data 'name=bay-lights' \\\n  --data 'protocol=https' \\\n  --data 'port=443' \\\n  --data 'host=bay-lights-api-production.herokuapp.com'\n# Note the Service ID returned in previous response, use it in place of `$SERVICE_ID`.\ncurl http://localhost:8001/plugins/ -i -X POST \\\n  --data 'name=request-size-limiting' \\\n  --data \"config.allowed_payload_size=8\" \\\n  --data \"service.id=$SERVICE_ID\"\ncurl http://localhost:8001/plugins/ -i -X POST \\\n  --data 'name=rate-limiting' \\\n  --data \"config.minute=5\" \\\n  --data \"service.id=$SERVICE_ID\"\ncurl http://localhost:8001/routes/ -i -X POST \\\n  --data 'paths[]=/bay-lights' \\\n  --data \"service.id=$SERVICE_ID\"\n```\n\n### Demo: custom plugin: hello-world-header\n\n[Custom plugins](https://docs.konghq.com/1.0.x/plugin-development/) allow you to observe and transform HTTP traffic using lightweight, high-performance [Lua](http://www.lua.org) code in Nginx [request processing contexts](https://docs.konghq.com/1.0.x/plugin-development/custom-logic/#available-request-contexts). Building on the [previous example](#user-content-demo-api-rate-limiting), let's add a simple plugin to Kong.\n\n[hello-world-header](lib/kong/plugins/hello-world-header/handler.lua) will add an HTTP response header **X-Hello-World** showing the date and a message from an environment variable.\n\nActivate this plugin for the API:\n\n```bash\ncurl http://localhost:8001/plugins/ -i -X POST \\\n  --data 'name=hello-world-header' \\\n  --data \"service.id=$SERVICE_ID\"\n```\n\nThen, set a message through the Heroku config var:\n\n```bash\nheroku config:set HELLO_WORLD_MESSAGE='🌈🙈'\n# …the app will restart.\n```\n\nNow, when fetching an API response, notice the **X-Hello-World** header:\n\n```bash\ncurl --head https://kong-proxy-public.herokuapp.com/bay-lights/lights\n# ↩︎\n# HTTP/1.1 200 OK\n# Connection: keep-alive\n# Content-Type: application/json;charset=utf-8\n# Content-Length: 9204\n# X-Ratelimit-Limit-Minute: 5\n# X-Ratelimit-Remaining-Minute: 4\n# Server: Cowboy\n# Date: Mon, 28 Aug 2017 23:14:47 GMT\n# Strict-Transport-Security: max-age=31536000\n# X-Content-Type-Options: nosniff\n# Vary: Accept-Encoding\n# Request-Id: 6c815aae-a5e9-496f-b731-dc72bbe2b63e\n# Via: kong/0.14.0, 1.1 vegur\n# X-Hello-World: Today is 2017-08-28. 🌈🙈  \u003c--- The injected header\n# X-Kong-Upstream-Latency: 49\n# X-Kong-Proxy-Latency: 161\n```\n\n\n### Demo: custom plugin: API translation, JSON→XML\n\nJSON/REST has taken over as the internet API lingua franca, shedding the complexity of XML/SOAP. The [National Digital Forecast Database [NDFD]](http://graphical.weather.gov/xml/) is a legacy XML/SOAP service.\n\nThis app includes a sample, custom plugin [ndfd-xml-as-json](lib/kong/plugins/ndfd-xml-as-json). This plugin exposes a JSON API that returns the maximum temperatures forecast for a location from the NDFD SOAP service. Using the single-resource concept of REST, the many variations of a SOAP or other legacy interfaces may be broken out into elegant, individual JSON APIs.\n\nTry it in your shell terminal:\n```bash\ncurl https://kong-proxy-public.herokuapp.com/ndfd-max-temps \\\n  --data '{\"latitude\":37.733795,\"longitude\":-122.446747}'\n# Response contains max temperatures forecast for San Francisco, CA\n\ncurl https://kong-proxy-public.herokuapp.com/ndfd-max-temps \\\n --data '{\"latitude\":27.964157,\"longitude\":-82.452606}'\n# Response contains max temperatures forecast for Tampa, FL\n\ncurl https://kong-proxy-public.herokuapp.com/ndfd-max-temps \\\n  --data '{\"latitude\":41.696629,\"longitude\":-71.149994}'\n# Response contains max temperatures forecast for Fall River, MA\n```\n\nMuch more elegant than the legacy API. See the [sample request body](spec/data/ndfd-request.xml):\n```bash\ncurl --data @spec/data/ndfd-request.xml -H 'Content-Type:text/xml' -X POST https://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php\n# Response contains wrapped XML data. Enjoy decoding that.\n```\n\nThis technique may be used to create a suite of cohesive JSON APIs out of various legacy APIs.\n\nHere's the configuration for this API translator:\n\n```bash\ncurl http://localhost:8001/services/ -i -X POST \\\n  --data 'name=ndfd-max-temps' \\\n  --data 'protocol=https' \\\n  --data 'port=443' \\\n  --data 'host=graphical.weather.gov' \\\n  --data 'path=/xml/SOAP_server/ndfdXMLserver.php'\n# Note the Service ID returned in previous response, use it in place of `$SERVICE_ID`.\ncurl http://localhost:8001/plugins/ -i -X POST \\\n  --data 'name=request-size-limiting' \\\n  --data \"config.allowed_payload_size=8\" \\\n  --data \"service.id=$SERVICE_ID\"\ncurl http://localhost:8001/plugins/ -i -X POST \\\n  --data 'name=rate-limiting' \\\n  --data \"config.minute=5\" \\\n  --data \"service.id=$SERVICE_ID\"\ncurl http://localhost:8001/plugins/ -i -X POST \\\n  --data 'name=ndfd-xml-as-json' \\\n  --data \"service.id=$SERVICE_ID\"\ncurl http://localhost:8001/routes/ -i -X POST \\\n  --data 'paths[]=/ndfd-max-temps' \\\n  --data \"service.id=$SERVICE_ID\"\n```\n\n👓 See the implementation of the custom plugin's [Lua source code](lib/kong/plugins/ndfd-xml-as-json), [unit tests](spec/unit/kong/plugins/ndfd-xml-as-json/handler_spec.lua), and [integration tests](spec/integration/kong/plugins/ndfd-xml-as-json_spec.lua).\n\n\n## Dev notes\n\n### Learning the language of Kong\n\n* [Definitely an openresty guide](http://www.staticshin.com/programming/definitely-an-open-resty-guide/)\n* [An Introduction To OpenResty - Part 1](http://openmymind.net/An-Introduction-To-OpenResty-Nginx-Lua/), [2](http://openmymind.net/An-Introduction-To-OpenResty-Part-2/), \u0026 [3](http://openmymind.net/An-Introduction-To-OpenResty-Part-3/)\n* [Nginx API for Lua](https://github.com/openresty/lua-nginx-module#nginx-api-for-lua), `ngx` reference, for use in Kong plugins\n  * [Nginx variables](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#var_upstream_status), accessible through `ngx.var`\n\n### Programming with Lua\n\n* [Lua 5.1](http://www.lua.org/manual/5.1/), Note: Kong is not compatible with the newest Lua version\n* [Classic Objects](https://github.com/rxi/classic), the basis of Kong's plugins\n* [Moses](http://yonaba.github.io/Moses/doc/), functional programming\n* [Lubyk](http://doc.lubyk.org), realtime programming (performance- \u0026 game-oriented)\n* [resty-http](https://github.com/pintsized/lua-resty-http), Nginx-Lua co-routine based HTTP client\n* [Serpent](http://notebook.kulchenko.com/programming/serpent-lua-serializer-pretty-printer), inspect values\n* [Busted](http://olivinelabs.com/busted/), testing framework\n\n### Local development\n\nTo work with Kong locally on macOS X.\n\n#### Requirements\n\n* [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)\n* [Heroku](https://www.heroku.com/home)\n  * [command-line tools (CLI)](https://toolbelt.heroku.com)\n  * [a free account](https://signup.heroku.com)\n* Kong \u0026 its dependencies\n  * as a single package install\n    * [Kong](https://docs.konghq.com/install/macos/) for macOS\n  * or, from source\n    * [Lua](https://www.lua.org/versions.html) 5.1\n    * [LuaRocks](https://github.com/luarocks/luarocks) 2.4.4\n    * [OpenSSL](https://www.openssl.org/source/) 1.1.1\n    * [OpenResty](https://openresty.org/en/installation.html) 1.13.6.2\n      * [Install from source](https://docs.konghq.com/install/source/)\n      * `./configure -j2 --with-openssl=~/Downloads/openssl-1.1.1a --with-http_realip_module --with-http_stub_status_module`\n    * [Kong](https://github.com/Kong/kong) 1.0.0\n      * `luarocks install kong 1.0.0 OPENSSL_DIR=/usr/local/opt/openssl CRYPTO_DIR=/usr/local/opt/openssl`\n\n#### Clone \u0026 connect\n\nIf you haven't already, clone and connect your own fork of this repo to the Heroku app:\n\n```bash\n# Replace the main repo with your own fork:\ngit clone https://github.com/heroku/heroku-kong.git\ncd heroku-kong\n\n# Use the name of the Heroku app:\nheroku git:remote --app $APP_NAME\nheroku info\n```\n\n##### Setup\n\n1. Ensure [requirements](#user-content-requirements) are met\n1. Create the Postgres user \u0026 databases:\n\n    ```bash\n    createuser --pwprompt kong\n    # set the password \"kong\"\n\n    createdb --owner=kong kong_dev\n    createdb --owner=kong kong_tests\n    ```\n1. Execute `./bin/setup`\n\n##### Running\n\n```bash\nbin/start\n```\n\n* Logs in `/usr/local/var/kong/logs/`\n* Prefix is `/usr/local/var/kong` for commands like:\n  * `kong health -p /usr/local/var/kong`\n  * `kong stop -p /usr/local/var/kong`\n\n##### Testing\n\nAny test-specific Lua rocks should be specified in `Rockfile_test` file, so that they are not installed when the app is deployed.\n\nAdd tests in `spec/`:\n\n  * Uses the [Busted testing framework](http://olivinelabs.com/busted)\n  * [Kong plugin testing guide](https://docs.konghq.com/1.0.x/plugin-development/tests/)\n  * [buildpack requirements for testing](https://github.com/heroku/heroku-buildpack-kong/blob/master/README.markdown#user-content-testing)\n\n```bash\nbin/test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheroku%2Fheroku-kong","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheroku%2Fheroku-kong","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheroku%2Fheroku-kong/lists"}