NGINX Ingress コントローラーを設定してクライアントのリクエスト本文を増やし、CORS をアクティブ化して追加のヘッダーを許可し、WebSocket を使用して Amazon EKS を操作する方法を教えてください。

最終更新日: 2021 年 12 月 10 日

Amazon Elastic Kubernetes サービス (Amazon EKS) クラスターでクライアントリクエスト本文のサイズを増やすように NGINX イングレスコントローラーを設定したいと考えています。また、クロスオリジンリソース共有(CORS)を有効にして追加のヘッダーを許可し、WebSocketをNGINX Ingressコントローラーで使用したいと考えています。

簡単な説明

次の設定オプションのいずれかを選択します。

  • クライアント要求本文のサイズを大きくするには、「最大本文サイズの構成」セクションの手順を完了します。
  • CORS を有効にして追加のヘッダーを許可するには、「CORS の有効化」セクションの手順を完了します。
  • NGINX Ingress コントローラーで WebSocket を使用するには、「WebSocket の使用」セクションの手順を完了します。

解決方法

本文の最大サイズを設定する

本文サイズのリクエストがクライアントのリクエスト本文の最大許容サイズを超えると、NGINX Ingress Controller は HTTP 413 エラーを返します。client_max_body_size パラメータを使用して、より大きいサイズを設定します。

nginx.ingress.kubernetes.io/proxy-body-size: 8m

注:proxy-body-size のデフォルト値は 1 M です。この数値を必要なサイズに変更してください。

注:すべての投稿本文データとファイルアップロードの最大サイズを増やす必要がある場合があります。PHP の場合は、 php.ini コンフィギュレーションの post_max_size upload_max_file_size の値を増やす必要があります。

CORS をアクティブ

Ingress ルールで CORS をアクティブ化するには、次のアノテーションを追加します。

nginx.ingress.kubernetes.io/enable-cors: "true"

次の例は、ヘッダー X-Forwarded-For が受け入れられることを示しています。

nginx.ingress.kubernetes.io/cors-allow-headers: "X-Forwarded-For"

他のヘッダーは、NGINX Ingress コントローラーのドキュメントの (GitHub Web サイトから) CORS を有効にするセクションにあります

WebSocket を使用する

NGINX は WebSocket (NGINX Web サイトから) バージョン 1.3 以降をサポートしていますが、必要ありません。接続が閉じられないようにするには、プロキシ読み取りタイムアウトとプロキシ送信タイムアウトの値を大きくする必要があります

次の例では、プロキシ読み取りタイムアウトとプロキシ送信タイムアウトに 120 秒が設定されています。

nginx.ingress.kubernetes.io/proxy-read-timeout: "120"
nginx.ingress.kubernetes.io/proxy-send-timeout: "120"

注:上記の 2 つの注釈のデフォルト値は 60 秒です


この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?