すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Nginx Ingress 設定ディクショナリ

最終更新日:Jun 16, 2026

NGINX Ingress は、nginx-configuration ConfigMap を介してグローバルに設定するか、アノテーションを介して Ingress ごとに設定します。

詳細については、「NGINX Ingress ConfigMap ドキュメント」および「NGINX Ingress アノテーションドキュメント」をご参照ください。

ConfigMap

nginx-configuration ConfigMap は、NGINX Ingress コントローラーによって管理されるすべての Ingress のグローバルデフォルト値を設定します。

ConfigMap の編集

kubectl edit cm -n kube-system nginx-configuration

デフォルト設定

以下の ConfigMap は、Container Service for Kubernetes (ACK) のデフォルト値を示しています。記載されていないフィールドは、アップストリームの ingress-nginx のデフォルト値を継承します。

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-configuration
  namespace: <namespace>    # デフォルト: kube-system
  labels:
    app: ingress-nginx
data:
  log-format-upstream: '$remote_addr - [$remote_addr] - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_length $request_time [$proxy_upstream_name] $upstream_addr $upstream_response_length $upstream_response_time $upstream_status $req_id $host [$proxy_alternative_upstream_name]'
  proxy-body-size: 20m
  proxy-connect-timeout: "10"
  max-worker-connections: "65536"
  enable-underscores-in-headers: "true"
  reuse-port: "true"
  worker-cpu-affinity: "auto"
  server-tokens: "false"
  ssl-redirect: "false"
  allow-backend-server-header: "true"
  ignore-invalid-headers: "true"
  generate-request-id: "true"
  upstream-keepalive-timeout: "900"

フィールドの説明

フィールド デフォルト値 説明
log-format-upstream (上記参照) アップストリームリクエストのログフォーマット。このフィールドを変更する場合は、kube-system/k8s-nginx-ingress AliyunLogConfig と Simple Log Service (SLS) のログ収集フォーマットも更新してください。詳細については、「Simple Log Service で NGINX Ingress コントローラーのアクセスログを診断する」をご参照ください。
proxy-body-size 20m クライアントリクエストボディの最大サイズ。NGINX の client_max_body_size にマッピングされます。
proxy-connect-timeout 10 プロキシサーバーとの接続を確立するためのタイムアウト (秒)。最大値は 75 です。gRPC の場合は、grpc_connect_timeout も設定してください。詳細については、proxy_connect_timeout をご参照ください。
max-worker-connections 65536 ワーカープロセスあたりの最大同時接続数。0 に設定すると、代わりに max-worker-open-files の値が使用されます。
enable-underscores-in-headers true リクエストヘッダー名にアンダースコア (_) を許可するかどうか。
reuse-port true SO_REUSEPORT を使用してワーカーごとに個別のリスニングソケットを作成し、受信接続をワーカー間で分散させます。
worker-cpu-affinity auto 各ワーカープロセスを利用可能な CPU コアにバインドします。ハイパフォーマンスなワークロードに役立ちます。
server-tokens false true の場合、Server レスポンスヘッダーとエラーページに NGINX のバージョンが含まれます。バージョン情報の公開を抑制するには false に設定します。
ssl-redirect false true の場合、TLS 証明書を持つすべてのサーバーに対して、HTTP から HTTPS へのグローバルなリダイレクト (301) を行います。
allow-backend-server-header true true の場合、汎用的な NGINX 文字列の代わりに、バックエンドから Server ヘッダーを渡します。
ignore-invalid-headers true リクエスト内の無効なヘッダーフィールドを無視するかどうか。
generate-request-id true truetrue の場合、X-Request-ID ヘッダーをまだ含まないリクエストに対して、ランダムな 値を生成します。
upstream-keepalive-timeout 900 (ACK) / 60 (オープンソース) アップストリームサーバーへのキープアライブ接続のアイドルタイムアウト (秒)。NGINX の keepalive_timeout ディレクティブにマッピングされます。

アノテーション

個々の Ingress リソースにアノテーションを追加して、グローバルな ConfigMap 設定をオーバーライドまたは拡張します。

詳細については、「NGINX Ingress アノテーションドキュメント」をご参照ください。

ロードバランシング

アノテーション タイプ 説明
nginx.ingress.kubernetes.io/load-balance round_robin | ewma バックエンドサービスのロードバランシングアルゴリズム。round_robin (デフォルト) はほとんどのワークロードに適しています。ewma (指数加重移動平均) は、遅延の影響を受けやすいアプリケーションに適しています。
nginx.ingress.kubernetes.io/upstream-hash-by string 一貫性ハッシュを有効にします。値はハッシュキーの変数です。例:$request_uri$request_uri$host${request_uri}-text-value。ノードを追加または削除しても、ルートのサブセットのみが移行されます。

例:リクエスト URI による一貫性ハッシュ

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-test
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/upstream-hash-by: "$request_uri"
spec:
  ingressClassName: nginx
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: <your-service-name>
                port:
                  number: <your-service-port>
Kubernetes クラスター 1.22 より前のバージョンでは、apiVersion: networking.k8s.io/v1beta1 と、backend の下にある serviceName/servicePort フィールドを使用してください。

Cookie アフィニティ

アノテーション タイプ デフォルト値 説明
nginx.ingress.kubernetes.io/affinity cookie アフィニティタイプ。cookie のみがサポートされています。
nginx.ingress.kubernetes.io/affinity-mode balanced | persistent balanced balanced はリクエストをインスタンス間で分散します。persistent は常にクライアントを同じバックエンドインスタンスにルーティングし、セッションの一貫性を確保します。
nginx.ingress.kubernetes.io/session-cookie-name string セッションルーティングのハッシュキーとして使用される Cookie 名。
nginx.ingress.kubernetes.io/session-cookie-path string / セッションクッキーに設定される Path 属性。nginx.ingress.kubernetes.io/use-regextrue の場合、正規表現はサポートされません。
nginx.ingress.kubernetes.io/session-cookie-max-age integer (秒) Max-Age 属性 (秒)。
nginx.ingress.kubernetes.io/session-cookie-expires integer (秒) Cookie の有効期間 (秒)。Expires 属性を設定します。

例:Cookie ベースのセッションアフィニティ

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-test
  annotations:
    nginx.ingress.kubernetes.io/affinity: "cookie"
    nginx.ingress.kubernetes.io/session-cookie-name: "route"
    nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
    nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
spec:
  ingressClassName: nginx
  rules:
    - host: stickyingress.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: http-svc
                port:
                  number: 80

リダイレクト

アノテーション タイプ デフォルト値 説明
nginx.ingress.kubernetes.io/ssl-redirect "true" | "false" この Ingress が TLS 証明書を持っている場合に、HTTP から HTTPS にリダイレクトします。詳細については、「HTTP から HTTPS へのリダイレクト」をご参照ください。
nginx.ingress.kubernetes.io/force-ssl-redirect "true" | "false" "false" TLS 証明書がなくても、HTTP から HTTPS へのリダイレクトを強制します。
nginx.ingress.kubernetes.io/permanent-redirect URL 恒久的なリダイレクトの宛先 URL。スキーム (http:// または https://) を含める必要があります。
nginx.ingress.kubernetes.io/permanent-redirect-code integer 301 恒久的なリダイレクトの HTTP ステータスコード。
nginx.ingress.kubernetes.io/temporal-redirect URL 一時的なリダイレクトの宛先 URL。スキーム (http:// または https://) を含める必要があります。
nginx.ingress.kubernetes.io/app-root path / へのリクエストを指定されたアプリケーションのルートパスにリダイレクトします。

例:`foo.com` から `bar.com` への恒久的なリダイレクト

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/permanent-redirect: "https://bar.com"
spec:
  ingressClassName: nginx
  rules:
    - host: foo.com
      http:
        paths:
          - path: "/"
            pathType: ImplementationSpecific
            backend:
              service:
                name: httpbin
                port:
                  number: 8000

書き換え

アノテーション タイプ 説明
nginx.ingress.kubernetes.io/rewrite-target string 書き換えの宛先パス。キャプチャグループをサポートしています。詳細については、「URL リダイレクトの設定」をご参照ください。
nginx.ingress.kubernetes.io/upstream-vhost string アップストリームサービスに送信される Host ヘッダーを書き換えます。

例:`example.com/test` へのリクエストに対して `Host` ヘッダーを `test.com` に書き換える

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo
  annotations:
    nginx.ingress.kubernetes.io/upstream-vhost: "test.com"
spec:
  ingressClassName: nginx
  rules:
    - host: example.com
      http:
        paths:
          - path: /test
            pathType: ImplementationSpecific
            backend:
              service:
                name: demo-service
                port:
                  number: 80

スロットリング

クライアント IP ごとのリクエストレートと同時接続数を制限して、バックエンドサービスをトラフィックスパイクから保護します。

アノテーション タイプ デフォルト値 説明
nginx.ingress.kubernetes.io/limit-connections integer IP あたりの最大同時接続数。超過したリクエストは 503 を受け取ります。
nginx.ingress.kubernetes.io/limit-rate integer (KB) 接続ごとの秒間最大データ転送量 (KB)。無効にするには 0 に設定します。プロキシバッファリングが有効になっている必要があります。
nginx.ingress.kubernetes.io/limit-rps integer IP アドレスごとの秒間最大リクエスト数。バースト制限 (レート × limit-burst-multiplier) を超えるリクエストは、limit-req-status-code エラー (デフォルトでは 503) を返します。
nginx.ingress.kubernetes.io/limit-rpm integer IP アドレスごとの分間最大リクエスト数。limit-rps と同じバースト動作です。
nginx.ingress.kubernetes.io/limit-burst-multiplier integer 5 バーストレート制限の乗数。
nginx.ingress.kubernetes.io/limit-whitelist CIDR list スロットリングから除外される CIDR ブロックのカンマ区切りリスト。

例:IP ホワイトリストを使用したレート制限

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/limit-rate: "100K"
    nginx.ingress.kubernetes.io/limit-rps: "1"
    nginx.ingress.kubernetes.io/limit-rpm: "30"
    nginx.ingress.kubernetes.io/limit-whitelist: "10.1.10.100"
spec:
  ingressClassName: nginx
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: backend-svc
                port:
                  number: 80

フォールバック

プライマリバックエンドが利用できない場合に、トラフィックをバックアップサービスにルーティングします。

アノテーション タイプ 説明
nginx.ingress.kubernetes.io/default-backend string 利用可能なバックエンドノードがない場合のフォールバックサービス。ACK コンソールの [アドオン] ページでグローバルに設定します。
nginx.ingress.kubernetes.io/custom-http-errors HTTP status codes default-backend と連携して動作します。バックエンドがリストされたステータスコードを返した場合、NGINX はリクエストをフォールバックサービスに転送します。パスは / に書き換えられます。グローバルな custom-http-errors ConfigMap 設定をオーバーライドします。

カナリアリリース

カナリアリリースとブルーグリーンデプロイメントを実装します。詳細については、「NGINX Ingress コントローラーを使用してカナリアリリースとブルーグリーンデプロイメントを実装する」をご参照ください。

アノテーション タイプ 説明
nginx.ingress.kubernetes.io/canary "true" | "false" カナリアリリースを有効にするかどうかを指定します。
nginx.ingress.kubernetes.io/canary-by-header string トラフィック分割のためのヘッダーキー。
nginx.ingress.kubernetes.io/canary-by-header-value string ヘッダーキーの完全一致値。一致するリクエストをカナリアにルーティングします。
nginx.ingress.kubernetes.io/canary-by-header-pattern regex ヘッダー値の正規表現マッチ。
nginx.ingress.kubernetes.io/canary-by-cookie string トラフィック分割に使用される Cookie キー。
nginx.ingress.kubernetes.io/canary-weight integer カナリアにルーティングされるトラフィックの割合 (0–canary-weight-total)。
nginx.ingress.kubernetes.io/canary-weight-total integer canary-weight の重みの分母。

タイムアウト

グローバルタイムアウト設定

nginx-configuration ConfigMap を編集して、タイムアウトをグローバルに設定します。

kubectl edit cm -n kube-system nginx-configuration
フィールド デフォルト値 説明
proxy-connect-timeout 5s プロキシ接続タイムアウト。最大:75 秒。
proxy-read-timeout 60s 連続するプロキシ読み取り間のタイムアウト (合計応答時間ではない)。
proxy-send-timeout 60s 連続するプロキシ書き込み間のタイムアウト (合計送信時間ではない)。
proxy-stream-next-upstream-timeout 600s 接続を次のアップストリームサーバーに渡すための最大時間。制限なしにするには 0 に設定します。
proxy-stream-timeout 600s クライアントまたはプロキシ接続のアイドルタイムアウト。データが転送されない場合に閉じられます。
upstream-keepalive-timeout 900s (ACK) / 60s (オープンソース) アップストリームサーバーへのキープアライブ接続のアイドルタイムアウト。
worker-shutdown-timeout 240s グレースフルシャットダウンのタイムアウト。
proxy-protocol-header-timeout 5s PROXY プロトコルヘッダーを受信するためのタイムアウト。TLS パススルーハンドラが壊れた接続でブロックされるのを防ぎます。
ssl-session-timeout 10m SSL セッションキャッシュの有効期間。各エントリは約 0.25 MB を使用します。
client-body-timeout 60s クライアントリクエストボディを読み取るためのタイムアウト。
client-header-timeout 60s クライアントリクエストヘッダーを読み取るためのタイムアウト。

Ingress ごとのタイムアウト設定

これらのアノテーションを使用して、特定の Ingress のグローバルタイムアウトをオーバーライドします。

アノテーション 説明
nginx.ingress.kubernetes.io/proxy-connect-timeout プロキシ接続タイムアウト。
nginx.ingress.kubernetes.io/proxy-send-timeout プロキシ送信タイムアウト。
nginx.ingress.kubernetes.io/proxy-read-timeout プロキシ読み取りタイムアウト。
nginx.ingress.kubernetes.io/proxy-request-buffering リクエストバッファリングモード。on:転送前に完全なリクエストをバッファリングします (HTTP/1.1 のチャンク化されたリクエストは常にバッファリングされます)。off:リクエストデータを直接ストリーミングします。送信エラー時のリトライはありません。

CORS

ブラウザリクエストに対してオリジン間リソース共有 (CORS) を有効にします。詳細については、「NGINX Ingress で CORS を設定する」をご参照ください。

アノテーション 説明
nginx.ingress.kubernetes.io/enable-cors この Ingress で CORS を有効にします。
nginx.ingress.kubernetes.io/cors-allow-origin CORS リクエストで許可されるオリジン。
nginx.ingress.kubernetes.io/cors-allow-methods 許可されるリクエストメソッド (GET、POST、PUT など)。
nginx.ingress.kubernetes.io/cors-allow-headers 許可されるリクエストヘッダー。
nginx.ingress.kubernetes.io/cors-expose-headers ブラウザに公開されるレスポンスヘッダー。
nginx.ingress.kubernetes.io/cors-allow-credentials CORS リクエストで認証情報 (Cookie、認証ヘッダー) を許可するかどうか。
nginx.ingress.kubernetes.io/cors-max-age CORS プリフライトキャッシュの持続時間 (秒)。

リトライポリシー

アノテーション デフォルト値 説明
nginx.ingress.kubernetes.io/proxy-next-upstream-tries 3 条件が満たされた場合のリトライ回数。
nginx.ingress.kubernetes.io/proxy-next-upstream-timeout リトライシーケンス全体に対するタイムアウト (秒)。デフォルトなし (無制限)。
nginx.ingress.kubernetes.io/proxy-next-upstream リトライ条件。複数の値はスペースで区切ります。有効な値:error (接続失敗)、timeout (タイムアウト)、invalid_response (無効なステータスコード)、http_500http_502http_503http_504http_403http_404http_429off (リトライ無効)。

IP アドレスベースのアクセス制御

アノテーション タイプ 説明
nginx.ingress.kubernetes.io/whitelist-source-range CIDR list IP 許可リスト。リストされた IP アドレスまたは CIDR ブロックのみが許可されます。カンマ区切り。
nginx.ingress.kubernetes.io/denylist-source-range CIDR list IP 拒否リスト。リストされた IP アドレスまたは CIDR ブロックは拒否されます。カンマ区切り。

例:特定の IP アドレスのみを許可する

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/whitelist-source-range: "10.1.10.2"
spec:
  ingressClassName: nginx
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: backend-svc
                port:
                  number: 80

グローバルに適用するには、nginx-configuration ConfigMap で whitelist-source-range を設定します。

トラフィックミラーリング

本番トラフィックに影響を与えることなく、テストのために本番リクエストをシャドウ環境に複製します。詳細については、「Ingress コントローラーを使用してネットワークトラフィックをミラーリングする」をご参照ください。

アノテーション タイプ 説明
nginx.ingress.kubernetes.io/mirror-target URL ミラーリング先。サービスの IP アドレスまたは外部 URL を受け入れます。元のリクエスト URI を追加するには $request_uri を使用します。例:https://test.env.com/$request_uri
nginx.ingress.kubernetes.io/mirror-request-body "true" | "false" リクエストボディをミラーリングするかどうか。
nginx.ingress.kubernetes.io/mirror-host string Host ヘッダー。

セキュリティ保護

クライアントと NGINX Ingress コントローラー間、およびコントローラーとバックエンドサービス間の TLS 暗号化を設定します。詳細については、「NGINX Ingress コントローラーの暗号化」をご参照ください。

クライアントからゲートウェイへの暗号化

アノテーション スコープ 説明
nginx.ingress.kubernetes.io/ssl-cipher ドメイン TLS 暗号スイート (カンマ区切り)。TLS 1.0–1.2 のハンドシェイクでのみ有効です。デフォルトの暗号スイート:ECDHE-ECDSA-AES128-GCM-SHA256ECDHE-RSA-AES128-GCM-SHA256ECDHE-ECDSA-AES128-SHAECDHE-RSA-AES128-SHAAES128-GCM-SHA256AES128-SHAECDHE-ECDSA-AES256-GCM-SHA384ECDHE-RSA-AES256-GCM-SHA384ECDHE-ECDSA-AES256-SHAECDHE-RSA-AES256-SHAAES256-GCM-SHA384AES256-SHA
nginx.ingress.kubernetes.io/auth-tls-secret ドメイン mTLS でクライアント証明書を検証するための CA 証明書 Secret。完全な CA チェーンを含む ca.crt ファイルを含める必要があります。

ゲートウェイからバックエンドへの暗号化

アノテーション スコープ 説明
nginx.ingress.kubernetes.io/proxy-ssl-secret サービス バックエンドに提示されるクライアント証明書 Secret。tls.crt (クライアント証明書)、tls.key (秘密鍵)、および ca.crt (信頼された CA 証明書) を含む PEM 形式である必要があります。"namespace/secretName" として指定します。
nginx.ingress.kubernetes.io/proxy-ssl-name サービス バックエンドとの TLS ハンドシェイクのための Server Name Indication (SNI) 値。
nginx.ingress.kubernetes.io/proxy-ssl-server-name サービス バックエンドとの TLS ハンドシェイクで SNI を有効または無効にします。

セキュリティ認証

Basic 認証でアクセスを制限します。認証されたリクエストのみがバックエンドサービスに到達します。

アノテーション スコープ 説明
nginx.ingress.kubernetes.io/auth-type Ingress 認証タイプ。basic に設定します。
nginx.ingress.kubernetes.io/auth-secret Ingress 認証情報 Secret の名前。フォーマット:namespace/secretName
nginx.ingress.kubernetes.io/auth-secret-type Ingress Secret データのフォーマット。auth-fileauth キーに username:password エントリが改行区切りで含まれます。auth-map:キーがユーザー名、値がパスワードです。
nginx.ingress.kubernetes.io/auth-realm Ingress 認証情報を要求する際にクライアントに表示される認証レルム。

Basic 認証の設定

  1. htpasswd を使用してパスワードファイルを生成します。

    htpasswd -c auth joker

    ファイルを検証します。

    cat auth
    # 期待される出力: joker:$apr1$R.G4krs/$hh0mX8xe4A3lYKMjvlVs1/
  2. パスワードファイルから Secret を作成します。

    kubectl create secret generic basic-auth --from-file=auth
  3. Ingress にアノテーションを追加します。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-nginx
      annotations:
        kubernetes.io/ingress.class: "nginx"
        nginx.ingress.kubernetes.io/auth-type: basic
        nginx.ingress.kubernetes.io/auth-secret: basic-auth
    spec:
      ingressClassName: nginx
      rules:
        - host: example.com
          http:
            paths:
              - path: /
                pathType: Prefix
                backend:
                  service:
                    name: backend-svc
                    port:
                      number: 80

次のステップ