我想設定 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_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"
**注意:前面兩個註解的預設值為 ** 60 秒。
相關資訊
Kubernetes 網站上的 Annotations