如何設定 NGINX Ingress Controller 增加用戶端要求本文、啟用 CORS 允許額外標頭,並將 WebSocket 與 Amazon EKS 搭配使用?

1 分的閱讀內容
0

我想設定 NGINX Ingress Controller,使用 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集增加用戶端要求主體的大小。此外,我還想啟用跨來源資源共用 (CORS) 允許額外標頭,並將 WebSocket 與 NGINX Ingress Controller 搭配使用。

簡短說明

選擇下列其中一個設定選項:

  • 若要增加用戶端要求主體的大小,請完成設定主體大小上限一節中的步驟。
  • 若要啟用 CORS 允許額外標頭,請完成啟用 CORS 一節中的步驟。
  • 若要將 WebSocket 與 NGINX Ingress Controller 搭配使用,請完成使用 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_sizeupload_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-timeoutproxy-send-timeout 的值。

在以下範例中,proxy read timeoutproxy send timeout 設定為 120 秒:

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

**注意:前面兩個註解的預設值為 ** 60 秒

相關資訊

Kubernetes 網站上的 Annotations

AWS 官方
AWS 官方已更新 1 年前