기본 콘텐츠로 건너뛰기

Kubernetes Ingress 사용시 Upstream 에러 ( An invalid response was received from the upstream server )

 

버전 정보

K8S Version : 1.28

Ingress : Kong


Kong Log

upstream sent too big header while reading response header from upstream, client


문제 정의

Upstream 시 header size 가 작아서 에러가 나는 현상


해결 방안

/usr/local/kong/nginx-kong.conf 파일에 buffer size 를 늘려줌으로 해결

방안1 : /usr/local/kong/nginx-kong.conf 을 mount 하여 진행

nginx-kong.conf 을 만들어 진행

------------------------------------------------
...
fastcgi_buffers 4 32k;
fastcgi_buffer_size 28k;
fastcgi_busy_buffers_size 32k;
...
server {
...
proxy_buffer_size 28k; proxy_buffers 4 32k; proxy_busy_buffers_size 32k;
}
...
-----------------------------------------------

방안2 : Deployment 에 spec.env 값을 주어 진행

  • - name: KONG_NGINX_PROXY_PROXY_BUFFER_SIZE
    value: "28k"
    - name: KONG_NGINX_PROXY_PROXY_BUSY_BUFFERS_SIZE
    value: "32k"
    - name: KONG_NGINX_PROXY_PROXY_BUFFERS
    value: "4 32k"
    - name: KONG_NGINX_HTTP_CLIENT_HEADER_BUFFER_SIZE
    value: "28k"
    - name: KONG_NGINX_HTTP_FASTCGI_BUFFER_SIZE
    value: "32k"
    - name: KONG_NGINX_HTTP_FASTCGI_BUSY_BUFFERS_SIZE
    value: "32k"
    - name: KONG_NGINX_HTTP_FASTCGI_BUFFERS
    value: "4 32k"


참조

https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffer_size
https://dev.jaedong.kim/nginx-upstream-sent-too-big-header-while-reading-response-header-from-upstream-error/
https://doogle.link/nginx-proxy-502-bad-gateway-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-bad-upstream-sent-too-big-header-while-reading-response-header-from-upstream/

댓글

이 블로그의 인기 게시물

Message Queue 란 무엇인가

Message Queue 란 무엇인가?? 메시지 지향 미들웨어(Meesage Oriented Middleware: MOM)은 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서 데이터 송수신을 의미 MOM을 구현한 시스템을 메시지 큐(MessageQueue: MQ)라 함 Producer(sender) 가 메시지를 큐에 전송하면 Consumer(receiver) 가 처리하는 방식으로, producer 와 consumer 에 message 프로세스가 추가되는 것이 특징 메시지 큐의 장점 비동기(Asynchronous): Queue에 넣기 때문에 나중에 처리할 수 있습니다. 비동조(Decoupling): 애츨리케이션과 분리할 수 있습니다. 탄력성(Resilience): 일부가 실패 시 전체에 영향을 받지 않습니다. 과잉(Redundancy): 실패할 경우 재실행 가능합니다. 보증(Guarantees): 작업이 처리된걸 확인할 수 있습니다. 확장성(Scalable): 다수의 프로세스들이 큐에 메시지를 보낼 수 있습니다. 메시지 큐 종류 Apache ActiveMQ, Apache Kafka, Apache Qpid, Apache RocketMQ, Beanstalkd, Enduro/X, HTTPSQS, JBoss Messaging, JORAM, RabbitMQ, Sun Open Message Queue, and Tarantool 등 Apache ActiveMQ Java Message Service (JMS)를 사용하는 오픈소스 MQ Java, C, C ++, C #, Ruby, Perl, Python, PHP 등 다양한 크로스 언어 클라이언트 및 프로토콜 지원 Spring 지원으로 Spring xml config 메커니즘 이용 가능 JDBC 지원으로 DB 높은 퍼포먼스 가능 높은 퍼포먼스를 위해 클러스터링 구성 가능 Restful API 제공 단 모니터링 도구제공하지 않음 ...