KongのNginxの設定を変更してみる
はじめに
OSSのKongは世界で最も人気のあるAPI Gatewayで、認証認可や流量制御などプラグインを有効化するだけで用意することができます。KongですがNginx(Openresty)をベースに作られており、kongの設定値を介してNginxの設定値を変更することもできます。
この記事ではNginx設定変更についての備忘録になります。
主に以下の公式ドキュメントの内容になります。
Kongの設定値の指定方法
kongの設定はKONG_
の接頭辞の環境変数か/etc/kong/kong.conf
ファイルで指定することができます。
設定ファイルを用いる場合
/etc/kong/kong.conf
or /etc/kong.conf
をデフォルトで読み込む設定になっています。
変更する場合はkong start --conf /path/to/kong.conf
で指定します。
設定例は/etc/kong/kong.conf.default
に記載があります。
(例) kong.conf
での設定定義
plugins = bundled
database = off
log_level = notice
Dockerfileでコピー
FROM kong:2.8.1-alpine
...
COPY kong.conf /etc/kong/kong.conf
環境変数を用いる場合
KONG_
の接頭辞がついた環境変数をkongの設定値として認識します。
(例) Dockerfileでの環境変数定義
FROM kong:2.8.1-alpine
...
ENV KONG_PLUGINS bundled
ENV KONG_DATABASE off
ENV KONG_LOG_LEVEL notice
Nginxの設定値の指定方法
KongはNginxをベースに動いており、Nginxのパラメータ設定も環境変数または設定ファイルで行うことができます。
設定ファイルを用いる場合
nginx_<namespace>_<directive>
を指定することで[prefix (default to /usr/local/kong/)]/nginx.conf
に挿入されます。
(例)httpブロックの設定を挿入したい場合
-
kong.conf
に記載するnginx_http_client_body_buffer_size=15m nginx_http_proxy_buffering=on nginx_http_proxy_buffers=8k nginx_http_proxy_buffer_size=8k
-
httpブロックに挿入される
/usr/local/kong/nginx-kong.confを確認
```
http {
...
# injected nginx_http_* directives
client_body_buffer_size 150m;
...
}
```
他も同様の仕組みで挿入される
prefix | Target |
---|---|
nginx_main_<directive> | root in nginx.conf |
nginx_events_<directive> | events {} block |
nginx_http_<directive> | http {} block |
nginx_proxy_<directive> | server {} block |
nginx_upstream_<directive> | upstream {} block |
設定ファイルを用いる場合
上記にKONG_
の接頭辞をつけた環境変数を設定します。
(例) Dockerfileでの環境変数定義
FROM kong:2.8.1-alpine
...
ENV KONG_NGINX_HTTP_CLIENT_BODY_BUFFER_SIZE 15m
ENV KONG_NGINX_HTTP_PROXY_BUFFERING on
ENV KONG_NGINX_HTTP_PROXY_BUFFERS 8k
ENV KONG_NGINX_HTTP_PROXY_BUFFER_SIZE 8k
Discussion