타임아웃을 늘리기 전에 요청이 실패한 위치를 찾습니다. 502는 upstream 통신 실패, 504는 upstream 대기 시간 초과를 가리키는 경우가 많습니다. 실제 실패는 로그로 구별합니다.
예: 애플리케이션이 수신 대기하지 않음
오류 로그 일부가 다음과 같다고 가정합니다.
text
connect() failed (111: Connection refused) while connecting to upstream
upstream: "http://127.0.0.1:3000/products"
Nginx가 3000 포트로 연결을 시도했지만 거절되었습니다. 애플리케이션이 실행 중이며 해당 주소에서 수신 대기하는지 확인합니다. Nginx 자신의 머신이나 컨테이너에서 curl -i http://127.0.0.1:3000/products를 테스트합니다. 컨테이너 안에서 이 주소는 그 컨테이너 자체를 가리키며 다른 애플리케이션 컨테이너를 자동으로 뜻하지 않습니다.
예: 연결됐지만 응답 헤더를 제때 받지 못함
text
upstream timed out while reading response header from upstream
이는 응답 헤더를 기다리는 상황을 나타냅니다. 요청을 애플리케이션 로그와 느린 데이터베이스 쿼리에 연결해 봅니다. 연결 시간과 upstream 응답 시간을 확인해 네트워크 연결 설정과 애플리케이션 작업을 분리합니다.
