본문 바로가기
🌱 Computer Science/Network

[NetWork/Web] HTTP 상태코드 정리 Status Code

by 카프리썬_ 2020. 3. 23.
728x90
728x90

2xx 코드 : 성공응답

  • 200 : ok, 정상
  • 204 : No Content, 삭제에 대한 응답코드
  • 206 : Range, 헤더를 지정한 요청에 대한 응답코드

3xx 코드 (Redirection 응답) : request가 완료하기 위해서 추가 동작필요

  • 301 : Moved Permanently
    영구적으로 URI가 변경됨
  • 302 : Found
    일시적으로 URI가 이동됨
  • 304 : Not Modified, 변경없음
  • 307 : Temporary Redirect, 임시적인 redirect

4xx 코드 (클라이언트 오류)  : Client가 보내는 error response

  • 400 : bad request, 잘못된 요청
    • 원인 : 클라이언트가 잘못된 형식의 요청을 전송, 그래서 서버가 이 요청을 이해할 수 없음 
  • 401 : Unauthorized ,권한없음
    • 의미 : 클라이언트가 요청한 응답을 받기 위해서 스스로 인증이 되지 않음
      (
      서버에게 클라이언트가 누군지 확인되지 않은 상태)
  • 403 : Forbidden, 접근권한 없음
    • 의미 : 클라이언트가 접근할 권리가 없다.
    • 언제? 서버에게 클라이언트가 누군지 확인되었지만, 그 클라이언트는 접할 권한이 없을 때
    • 원인 : AWS AWF 웹 엑세스 제어목록(웹 ACL)을 구성해서 요청이 차단됨. 
  • 404 : Not Found, 요청내용을 찾을 수 없음
    • 의미 : 서버가 요청받은 리소스를 찾을 수 없다.
    • 언제? 브라우저입장에선 알려지지 않은 URL일때,
      또는 API에서 endpoint는 올바른 곳이지만, 리소스 자체가 존재하지 않을 때
  • 408 : Request Timeout, 요청 타임아웃
    • 의미 : 클라이언트가 타임아웃이 끝나기전에 request를 보내지 않음

46x 코드 (로드밸런서 오류) : 로드밸런서가 보내는 response

  • 460 : 로드밸런서의 타임아웃이 끝나기전에 클라이언트가 로드밸런서랑 연결을 끊음
    • 의미 : 로드밸런서는 클라이언트가 보내는 request을 받아서 이제 response를 주려고 하는데,
      유휴제한시간이 종료되기 전에 클라이언트가 먼저 연결을 종료해버림
    • 조치사항 : 클라이언트의 제한시간이 로드밸런서의 타임아웃보다 큰지 확인 
      로드밸런서의 유휴제한시간(타임아웃)에 맞게 클라이언트의 제한시간을 늘린다
  • 463 : 로드밸런서가 ip주소가 30개가 넘는 X-Forwarded-For 요청을 받았다

5xx 코드 (서버 오류) : Server가 보내는 error response

  • 500 : Internal Server error, 내부 서버 오류
    • 가능한 원인
      • 내부로직 오류
      • 로드밸런서의 보안그룹, VPC의 네트워크 ACL에 의해 액세스 허용상태인지 확인
      • NAT게이트웨를 사용해서 인터넷 액세스 활성화인지 확인
      • 클라이언트가 HTTP 프로토콜 없이 request를 보냄
      • 로드밸런서가 redirection URL생성하지 못함
  • 501 : Not Implemented, 구현되지 않음
    • 의미 : 서버가 요청을 받아서 수행하는데 필요한 기능을 지원하지 않음
    • 원인 : Transfer-Encoding 헤더값이 지원하는 값(chunked 및 identity)이 아니다. 
  • 502 Bad Gateway, 잘못된 게이트웨이
    • 의미 : 로드밸런서가 타겟대상에 TCP연결을 시도하려고 했는데, 실패해서 연결 끊음 
    • 가능한 원인
      1. 로드밸런서가 타겟대상으로 부터 예기치 않음 응답(호스트에 연결할 수 없음)을 받음
      2. 로드밸런서가 response를 주려고 대기하고 있는데 타겟대상이 연결을 종료함 (TCP RST/ FIN패킷받음)
    • 조치사항
      1. 로드밸런서 서브넷부터 대상포트의 대상에 이르기까지 트래픽 허용여부 점검
      2. 타겟 대상의 연결유지 기간이 로드밸런서의 유휴제한시간(타임아웃시간)보다 짧은지 확인
  • 503 Service Unavailable, 서비스 불가
    • 의미 : 서버가 요청을 처리할 준비가 되지 않았다.
    • 원인 : 로드밸런서의 대상그룹에 등록된 대상이 없을때
    • 언제? 서버가 유지보수를 위해 작동이 중단되거나 과부하가 걸렸을 때
  • 504 Gateway Timeout, 게이트웨이 제한시간
    • 의미 : 타임아웃이 만료되서 서버가 제 시간에 응답을 받지 못했다.
    • 가능한원인
      1. 연결제한시간이 만료되기 전에 로드밸런서가 타겟대상에 연결하지 못함
      2. 로드밸런서가 타겟대상에 연결까진 했지만, 유휴제한시간(타임아웃) 안에 타겟대상에서 응답을 못받음
      3. 타겟대상이 body보다 큰 header를 리턴해서, 이걸 받는 동안 시간초과
    • 언제? Reverse Proxy Server에서 해당 프록시(upstream)과 통신이 오래걸려서, 지정한 제한시간 초과할때 발생
    • 예를 들어? 
      Reverse Proxy Server인 Nginx가 upstream인 Python과 연결하는 시간을 60초로 지정함
      즉, Nginx는 Python으로 부터 response를 60초만 기다리겠다.
      이보다 오래걸리면 연결 끊고, 타임아웃 처리(504 error)
    • gateway 타임아웃 종류
      1. connect_timeout(디폴트 : 60초) : upstream과 연결이 지연되는 경우
        TCP/IP에서 3way handshake 방식으로 패킷을 받는 시간이 connect_timeout을 초과했을 경우
      2. send_timeout(디폴트 : 60초) : 프록시 연결후 데이터 전송이 지연되는 경우
        파일을 업로드하는 속도가 느려서 send_timeout를 초과했을 경우
      3. read_timeout(디폴트 : 60초) : upstream과 정상연결, 요청도 잘 보냈지만, 응답을 받는게 오래걸림
        백엔드 서버가 느리거나, 복잡한 작업을 하거나, 기타이유로 지연
    • AWS ELB의 Timeout
      • send_timeout, read_timeout 디폴트값 60초 (idle timout)

 

참고

https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html

 

https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html

애플리케이션 로드 밸런서 문제 해결

docs.aws.amazon.com

https://brunch.co.kr/@leedongins/65

 

HTTP 상태 코드 정리

와탭 블로그 | ALREADY REPORTED Client error responses 와탭에서 제공하는 URL Monitoring은 웹서비스의 장애를 알려주는 서비스 입니다. 웹서비스에서 반환되는 상태 코드가 4xx, 5xx 로 나타나는 경우 경고 알람을 보내도록 되어 있습니다. 웹 서비스에서 반환되는 상태 코드는 HTTP STATUS CODE라고 불리우며 대표적인 상태

brunch.co.kr

 

504 코드

https://blog.lael.be/post/9251

 

504 Gateway Time-out 문제의 원인과 해결 방법

검색해봤는데, 마음에 드는 설명글이 없어서, 제가 하나 작성해봅니다. 이 504 Gateway Time-out 오류는 리버스 프록시 프로그램에서 < == > 해당 프록시(upstream)와의 통신이 오래걸렸고, 리버스 프록시 프로그램에서 지정한 시간 제한을 초과해서 발생한 오류입니다. 리버스 프록시 프로그램은 거의 99% nginx 를 사용…

blog.lael.be

https://atinjin.blogspot.com/2018/04/aws-elb-504-error.html

 

AWS ELB 504 Error

Software Programing에서 얻은 지식(Knowledge), 팁(Tip)에 대한 블로그입니다.

atinjin.blogspot.com

 

728x90
반응형