我想要設定 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
若要在輸入規則中啟用 CORS,請加入以下註解:
nginx.ingress.kubernetes.io/enable-cors: "true"
下面的範例顯示接受 X-Forwarded-For 標頭:
nginx.ingress.kubernetes.io/cors-allow-headers: "X-Forwarded-For"
您可以在 NGINX Ingress Controller 文件的啟用 CORS (來自 GitHub 網站) 部分找到其他標頭。
使用 WebSocket
NGINX 支援 WebSocket (來自 NGINX 網站) 1.3 或更高版本,無需任何要求。若要避免閉合連線,必須增加 proxy-read-timeout 和 proxy-send-timeout 值。
在以下範例中,針對 proxy 讀取逾時和 proxy 傳送逾時設定 120 秒:
nginx.ingress.kubernetes.io/proxy-read-timeout: "120"
nginx.ingress.kubernetes.io/proxy-send-timeout: "120"
**注意:**前面兩個註解的預設值為 60 秒。