旧バージョンのドキュメントを参照しています。 最新のドキュメントはこちらをご参照ください。
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 tostringos.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