NGINX Ingress コントローラーの ConfigMap で設定される各パラメーターは、Service Mesh(ASM)ゲートウェイ上の Istio または Envoy の設定項目 1 つ以上に対応します。本トピックの表では、最も一般的に使用されるパラメーターとその ASM における対応関係をまとめています。全パラメーターの一覧については、「Ingress NGINX ConfigMap リファレンス」をご参照ください。
ASM ゲートウェイ構成と NGINX の違い
NGINX では、すべての設定を単一の ConfigMap に集約しますが、ASM では設定を以下の 3 種類の Istio リソースに分割して管理します。
| Istio リソース | 制御対象 | 代表的な NGINX 対応項目 |
|---|---|---|
| Gateway | リスナーポート、TLS 終端処理、HTTPS リダイレクト | ssl-redirect |
| VirtualService | ルーティングルール、パスの再書き換え、ルート単位のタイムアウト | ルートレベルのアノテーション |
| DestinationRule | コネクションプール、キープアライブ、サーキットブレーカー | keep-alive-requests、proxy-connect-timeout、upstream-keepalive-*、max-worker-connections |
対応する設定を適用するには、クラスター内で該当する Istio リソースを作成または更新します。
接続およびキープアライブ関連パラメーター
これらのパラメーターは、コネクションプーリング、キープアライブ動作、および接続数制限を制御します。ASM では、ほとんどのパラメーターが connectionPool セクション(DestinationRule 内)に対応します。
| NGINX パラメーター | NGINX 動作 | ASM における対応設定 |
|---|---|---|
keep-alive-requests | キープアライブ接続あたりの最大リクエスト数。この上限に達すると接続が終了します。 | connectionPool.maxRequestsPerConnection(DestinationRule 内)。 |
max-worker-connections | NGINX ワーカープロセスあたりの同時接続数の上限。 | connectionPool.tcp.maxConnections(DestinationRule 内)。送信先ホスト 1 台に対する最大接続数を設定します。 |
upstream-keepalive-connections | ワーカープロセスあたりにキャッシュされるアイドル状態のキープアライブ接続数の上限。 | connectionPool.tcp.maxConnections(DestinationRule 内)。このフィールドは、アイドル接続に限定されず、送信先ホストへの合計接続数を制御します。スコープの違いにより、値をそのまま 1 対 1 で移行することは適切ではありません。本パラメーターの移行前に、接続要件を再確認してください。説明 このフィールドは、アイドル接続に限定されず、送信先ホストへの合計接続数を制御します。スコープの違いにより、値をそのまま 1 対 1 で移行することは適切ではありません。本パラメーターの移行前に、接続要件を再確認してください。 |
upstream-keepalive-timeout | アップストリームサーバーへのアイドル状態のキープアライブ接続のタイムアウト。 | connectionPool.http.idleTimeout(DestinationRule 内)。 |
例:DestinationRule によるコネクションプーリングの構成
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
name: my-service-pool
spec:
host: my-service.prod.svc.cluster.local
trafficPolicy:
connectionPool:
tcp:
maxConnections: 100
http:
maxRequestsPerConnection: 1000
idleTimeout: 60sタイムアウト関連パラメーター
| NGINX パラメーター | NGINX 動作 | ASM における対応設定 |
|---|---|---|
proxy-connect-timeout | アップストリームサーバーへの接続確立のタイムアウト。75 秒を超えることはできません。 | connectionPool.http.connectTimeout(DestinationRule 内)。 |
例:接続タイムアウトの設定
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
name: my-service-timeout
spec:
host: my-service.prod.svc.cluster.local
trafficPolicy:
connectionPool:
http:
connectTimeout: 30sヘッダー処理関連パラメーター
これらのパラメーターは、ヘッダーの処理、生成、検証方法を制御します。
| NGINX パラメーター | NGINX 動作 | ASM における対応設定 |
|---|---|---|
allow-backend-server-header | バックエンドがデフォルトの NGINX 文字列ではなく、独自の Server ヘッダーを返すことを許可します。 | ASM ゲートウェイではデフォルトで有効です。デフォルト値:true。 |
enable-underscores-in-headers | HTTP ヘッダー名にアンダースコアを含めることを許可します。 | Envoy の headers_with_underscores_action パラメーターに対応します。デフォルト値:true。 |
ignore-invalid-headers | 無効な名前のヘッダーを無視します。有効な名前は、英字、数字、ハイフンのみから構成されます。アンダースコアのサポートは、underscores_in_headers 設定に依存します。 | Envoy ではヘッダー検証機能(Header Validator)を使用します。明示的な設定がない場合、Envoy はデフォルトの検証ルールを適用し、無効なヘッダーに対して 400 Bad Request を返します。![]() |
generate-request-id | 受信リクエストに X-Request-ID ヘッダーが存在しない場合、ランダムな値を生成します。 | Envoy の generate_request_id パラメーターに対応します。デフォルト値:true。ASM プラグインを用いて変更できます。 |
server-tokens | NGINX が Server レスポンスヘッダーおよびエラーページにバージョン情報を含めるかどうかを制御します。デフォルト:無効。 | ASM ゲートウェイでは、デフォルトで Envoy の Server ヘッダーが設定されます。エラーページにはバージョン情報は表示されません。 |
転送およびプロキシヘッダー
3 つの NGINX パラメーターが X-Forwarded-For の動作を制御します。Istio では、これらすべてがゲートウェイのネットワークトポロジー構成に対応します。
| NGINX パラメーター | NGINX 動作 | ASM における対応設定 |
|---|---|---|
compute-full-forwarded-for | X-Forwarded-For ヘッダーを置き換える代わりに、リモートアドレスを追加します。 | Envoy の use_remote_address パラメーターで制御されます。デフォルト値:true。「ゲートウェイのネットワークトポロジーの構成」をご参照ください。 |
forwarded-for-header | クライアントの送信元 IP アドレスを識別するヘッダーを指定します。 | ASM ゲートウェイでは X-Forwarded-For を使用し、この目的でのカスタムヘッダー名はサポートされていません。 |
use-forwarded-headers | true の場合、NGINX は受信した X-Forwarded-* ヘッダーを透過的に転送します(通常、NGINX が別のレイヤー 7 プロキシの後ろにある場合)。false の場合、NGINX は受信値を無視し、新規に生成します。 | 「ゲートウェイのネットワークトポロジーの構成」をご参照ください。 |
TLS およびリダイレクト関連パラメーター
| NGINX パラメーター | NGINX 動作 | ASM における対応設定 |
|---|---|---|
ssl-redirect | サーバーに TLS 証明書が設定されている場合、HTTP を HTTPS にグローバルにリダイレクトします。 | tls.httpsRedirect を ゲートウェイ リソースで設定します。 |
例:HTTP から HTTPS へのリダイレクト
apiVersion: networking.istio.io/v1
kind: Gateway
metadata:
name: my-gateway
spec:
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "example.com"
tls:
httpsRedirect: true # HTTP リクエストに対して 301 を返しますログおよび可観測性
| NGINX パラメーター | NGINX 動作 | ASM における対応設定 |
|---|---|---|
log-format-upstream | アップストリームログのフォーマットをカスタマイズします。 | ASM コンソールの 可観測性設定 ページでログフォーマットを構成します。「可観測性設定の構成」をご参照ください。 |
リクエストボディのサイズ制限
| NGINX パラメーター | NGINX 動作 | ASM における対応設定 |
|---|---|---|
proxy-body-size | クライアントからのリクエストボディの最大サイズ。この上限を超えると 413 Request Entity Too Large が返されます。 | ASM には対応する設定はありません。大規模なペイロードにはチャンク転送エンコーディングをご利用ください。 |
ワーカーおよびプロセス関連パラメーター
| NGINX パラメーター | NGINX 動作 | ASM における対応設定 |
|---|---|---|
reuse-port | SO_REUSEPORT を使用してワーカープロセスごとに個別のリスニングソケットを作成し、カーネルが接続をワーカー間で分散できるようにします。デフォルト:true。 | ASM ゲートウェイではデフォルトで有効です。デフォルト値:true。 |
worker-cpu-affinity | ワーカープロセスを特定の CPU セットにバインドします。 | コンテナ環境では該当しません。デフォルト設定をご利用ください。 |
構成の拡張性
| NGINX パラメーター | NGINX 動作 | ASM における対応設定 |
|---|---|---|
allow-snippet-annotations | Ingress アノテーション内にカスタム NGINX 構成スニペットを記述することを許可します。 | ASM ではアノテーションベースのスニペットはサポートされていません。ゲートウェイの動作をカスタマイズするには、IstioGateway YAML を直接編集してください。 |
参考文献
Ingress NGINX ConfigMap リファレンス — NGINX Ingress コントローラーの ConfigMap パラメーターの完全リスト
Istio DestinationRule API リファレンス — コネクションプール、負荷分散、サーキットブレーカーの設定
Istio Gateway API リファレンス — ポートリスナー、TLS 終端処理、HTTPS リダイレクト
ゲートウェイのネットワークトポロジーの構成 —
X-Forwarded-Forの処理および信頼済みプロキシの構成Envoy Header Validator — ヘッダー検証ルール
可観測性の設定:ASM コンソールでのアクセスログのカスタマイズ
