Nginxディレクティブ
個々のNginxディレクティブの挿入
kong.conf
内のnginx_http_
で始まるエントリ、
nginx_proxy_
またはnginx_admin_
はNginxディレクティブに変換されます。
-
nginx_http_
という接頭辞が付いたエントリは、http
ブロックディレクティブ全体に挿入されます。 -
nginx_proxy_
という接頭辞が付いたエントリは、Kong Gatewayのプロキシポートを処理するserver
ブロックディレクティブに挿入されます。 -
nginx_admin_
という接頭辞が付いたエントリは、Kong GatewayのAdmin APIポートを処理するserver
ブロックディレクティブに挿入されます。
サポートされているすべての名前空間については、NGINX注入ディレクティブセクションを参照してください。
たとえば、次の行を kong.conf
ファイルに追加するとします。
nginx_proxy_large_client_header_buffers=16 128k
Kong GatewayのNginx構成のプロキシserver
ブロックに次のディレクティブを追加します。
large_client_header_buffers 16 128k;
これらのディレクティブは、 環境変数を使用します。たとえば、 次のように環境変数を宣言するとします。
export KONG_NGINX_HTTP_OUTPUT_BUFFERS="4 64k"
その結果、次のNginxディレクティブがhttp
ブロックに追加されます。
output_buffers 4 64k;
Nginxの構成ファイルの構造とブロック ディレクティブについては、Nginxリファレンスを参照してください。
Nginxディレクティブの一覧については、Nginxディレクティブインデックスを参照してください。
注入されたNginxディレクティブを介してファイルを含める
複雑な構成では、Nginx構成に新しいserver
ブロックを追加しなければならない場合があります。
Nginx設定ファイルを指すinclude
ディレクティブをNginx構成に注入できます。
たとえば、my-server.kong.conf
というファイルを次の内容で
作成します。
# custom server
server {
listen 2112;
location / {
# ...more settings...
return 200;
}
}
以下のエントリをお客様のkong.conf
ファイルに追加することで、Kong Gatewayノードがこのポートに情報を提供するように設定できます。
nginx_http_include = /path/to/your/my-server.kong.conf
以下のように、環境変数を使用することもできます。
export KONG_NGINX_HTTP_INCLUDE="/path/to/your/my-server.kong.conf"
Kong Gatewayを起動すると、そのファイルのserver
セクションが
そのファイルに追加されます。これは、
通常のKong Gatewayポートに加えて定義されたカスタムサーバーが応答することを意味します。
curl -I http://127.0.0.1:2112
HTTP/1.1 200 OK
...
nginx_http_include
プロパティで相対パスを使用した場合、そのパスは kong.conf
ファイルの prefix
プロパティの値(または Kong Gateway を開始する際に接頭辞を上書きするために使用した場合は kong start
の -p
フラグの値)に対して相対的に解釈されます。
カスタムNginxテンプレートと埋め込み Kong Gateway
次の2つのケースでは、カスタムNginx構成テンプレートを直接使用できます。
-
Kong Gatewayのデフォルト のNginx構成を変更する必要があります。具体的には、
kong.conf
で調整できない値については、Nginx 構成を生成するために Kong Gateway が使用するテンプレートを変更し、カスタマイズしたテンプレートを使用して Kong Gateway を起動することができます。 -
すでに実行中のOpenRestyインスタンスにKong Gatewayを埋め込む必要があります。 Kong Gatewayの生成された構成を再利用して既存の構成に含めることができます
カスタムNginxテンプレート
Kong Gatewayは起動、再読み込み、再起動に--nginx-conf
引数を使用します。この引数はNginx構成テンプレートで指定する必要があります。
かかるテンプレートで使用されるPenlightテンプレートエンジンは、Kong Gateway構成を使用してコンパイルされます。
テンプレートエンジンでは次のLua関数が使用できます。
-
pairs
,ipairs
tostring
os.getenv
Kong Gatewayのデフォルトテンプレートは、Kong Gatewayインスタンスを実行しているシステム上で、以下のコマンドを使用して見つけることができます:find / -type d -name "templates" | grep kong
オープンソースKong Gatewayについては、
テンプレートディレクトリを参照してください。
Nginx構成ファイルのテンプレートは
nginx.lua
およびnginx_kong.lua
の2つに分かれています。前者は
最小限かつ後者を含み、 Kong Gatewayの実行に必要なものがすべて含まれています。kong start
が実行されると、Nginxを起動する直前にこれらの2つのファイルが接頭辞ディレクトリにコピーされ、次のようになります。
/usr/local/kong
├── nginx-kong.conf
└── nginx.conf
Kong Gatewayで定義されているがkong.conf
のKong Gateway構成を介して調整できないグローバル設定を調整する必要がある場合は、nginx_kong.lua
構成テンプレートをカスタムテンプレートファイル(この例では
custom_nginx.template
と呼ばれます)の内容にインライン化できます。
# ---------------------
# custom_nginx.template
# ---------------------
worker_processes ${{NGINX_WORKER_PROCESSES}}; # can be set by kong.conf
daemon ${{NGINX_DAEMON}}; # can be set by kong.conf
pid pids/nginx.pid; # this setting is mandatory
error_log logs/error.log ${{LOG_LEVEL}}; # can be set by kong.conf
events {
use epoll; # a custom setting
multi_accept on;
}
http {
# contents of the nginx_kong.lua template follow:
resolver ${{DNS_RESOLVER}} ipv6=off;
charset UTF-8;
error_log logs/error.log ${{LOG_LEVEL}};
access_log logs/access.log;
... # etc
}
その後、以下のように Kong Gateway を開始できます。
kong start -c kong.conf --nginx-conf custom_nginx.template