클라이언트 요청 본문의 크기를 늘리도록 NGINX 인그레스 컨트롤러를 구성하여 Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터를 사용하려고 합니다. 또한 추가 헤더를 허용하기 위해 CORS(교차 출처 리소스 공유)를 활성화하고 NGINX 인그레스 컨트롤러와 함께 WebSocket을 사용하고 싶습니다.
간략한 설명
다음 구성 옵션 중 하나를 선택합니다.
- 클라이언트 요청 본문의 크기를 늘리려면 최대 본문 크기 구성 섹션의 단계를 완료합니다.
- 추가 헤더를 허용하도록 CORS를 활성화하려면 CORS 활성화 섹션의 단계를 완료합니다.
- NGINX 인그레스 컨트롤러와 함께 WebSocket을 사용하려면 웹소켓 사용 섹션의 단계를 완료합니다.
해결 방법
최대 본문 크기 설정
본문 크기 요청이 클라이언트 요청 본문의 최대 허용 크기를 초과하는 경우 NGINX 인그레스 컨트롤러는 HTTP 413 오류를 반환합니다. 더 큰 크기를 구성하려면 client_max_body_size 파라미터를 사용하세요.
nginx.ingress.kubernetes.io/proxy-body-size: 8m
참고: proxy-body-size의 기본값은 1M이므로 필요한 크기로 변경해야 합니다.
경우에 따라 모든 글 본문 데이터 및 파일 업로드의 최대 크기를 늘려야 할 수도 있습니다. 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"
자세한 내용은 Kubernetes 웹사이트에서 CORS 활성화를 참조하세요.
WebSocket 사용
NGINX는 추가 구성 없이 WebSocket을 지원합니다. 연결이 닫히지 않도록 하려면 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 웹 사이트의 주석