Amazon Elastic Kubernetes Service (Amazon EKS) クラスターでクライアントリクエストの本文サイズを増やすように NGINX Ingress Controller を設定したいと考えています。また、Cross-Origin Resource Sharing (CORS) を有効にして追加のヘッダーを許可し、NGINX Ingress Controller で WebSocket を使用したいとも考えています。
簡単な説明
次のいずれかの設定オプションを選択します。
- クライアントリクエストの本文のサイズを増やすには、「本文の最大サイズを設定する」セクションの手順を実行します。
- CORS を有効にして追加のヘッダーを許可するには、「CORS を有効化する」セクションの手順を実行します。
- NGINX Ingress Controller で WebSocket を使用するには、「WebSocket を使用する」セクションの手順を実行します。
解決策
本文の最大サイズを設定する
本文サイズのリクエストがクライアントリクエストの本文の最大許容サイズを超えると、NGINX Ingress コントローラーは 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"
詳細については、Kubernetes ウェブサイトの「Enable CORS」を参照してください。
WebSocket を使用する
NGINX は追加の設定なしで WebSocket をサポートします。接続が閉じられないようにするには、proxy-read-timeout と proxy-send-timeout の値を増やします。
次の例では、proxy read timeout と proxy send timeout に 120 秒が設定されています。
nginx.ingress.kubernetes.io/proxy-read-timeout: "120"nginx.ingress.kubernetes.io/proxy-send-timeout: "120"
注: 上記の 2 つの注釈のデフォルト値は 60 秒です。
関連情報
Kubernetes ウェブサイトの「Annotations」