← 모든 기록
HTTP 오류 코드 완전 정복: 1xx부터 5xx까지 한눈에 보는 가이드 대표 이미지
문제 해결

HTTP 오류 코드 완전 정복: 1xx부터 5xx까지 한눈에 보는 가이드

HTTP 상태 코드 1xx부터 5xx까지의 의미와 대표 코드를 표로 정리하고, 4xx·5xx 오류 발생 시 서버 로그 확인, 리다이렉트 체인 점검, DNS 검증 등을 포함한 실무 진단 절차를 단계별로 안내합니다.

HTTP 상태 코드는 클라이언트 요청의 성공 여부를 나타내는 세 자리 숫자로, 1xx부터 5xx까지 다섯 개의 그룹으로 분류됩니다. 웹사이트 운영 중 4xx나 5xx 오류가 발생하면 서버 로그 분석, 리다이렉트 체인 점검, DNS 설정 확인 같은 체계적인 진단이 필요합니다. 이 글에서는 각 코드의 의미와 함께 실무에서 바로 적용할 수 있는 오류 진단 절차를 안내합니다.

HTTP 상태 코드란 무엇인가?

HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 이 코드는 서버가 클라이언트 요청을 처리한 결과를 나타내는 표준화된 숫자입니다. HTTP 상태 코드의 첫 번째 숫자는 상태의 카테고리를 나타냅니다. 예를 들어 2xx는 성공, 4xx는 클라이언트 오류, 5xx는 서버 오류를 의미합니다.

HTTP 상태 코드의 다섯 가지 분류

HTTP 상태 코드는 크게 다음 다섯 그룹으로 나뉩니다.

  • 1xx (정보): 요청을 수신했으며 계속 처리 중임을 나타냅니다.
  • 2xx (성공): 요청이 성공적으로 처리되었습니다.
  • 3xx (리다이렉트): 요청을 완료하려면 추가 동작이 필요합니다.
  • 4xx (클라이언트 오류): 클라이언트 측에서 문제가 있어 요청을 처리할 수 없습니다.
  • 5xx (서버 오류): 서버가 유효한 요청을 처리하지 못했습니다.

HTTP 상태 코드 한눈에 보기 (표)

분류주요 상태 코드의미진단 포인트
1xx100 Continue클라이언트가 요청을 계속해도 됨Expect 헤더로 대용량 전송 전 사전 확인
2xx200 OK요청 성공, 본문에 리소스 제공GET/HEAD 요청 시 정상 응답
2xx201 Created새 리소스 생성 성공POST 응답으로 Location 헤더 포함
3xx301 Moved Permanently영구 리다이렉트SEO를 위해 올바른 URL 구조로 변경
3xx302 Found임시 리다이렉트캐시 무효화, 테스트 환경에서 사용
4xx400 Bad Request잘못된 요청 구문요청 파라미터, 헤더 길이 확인
4xx401 Unauthorized인증 필요로그인 토큰 또는 Basic 인증 헤더 누락
4xx403 Forbidden권한 없음접근 제어 목록(ACL) 점검
4xx404 Not Found리소스를 찾을 수 없음URL 철자, 서버 경로, DB 데이터 확인
5xx500 Internal Server Error서버 내부 오류서버 로그에서 스택 트레이스, 설정 오류 확인
5xx502 Bad Gateway업스트림 서버 무효 응답프록시/게이트웨이 뒤의 서비스 상태 확인
5xx503 Service Unavailable일시적 서비스 중단서버 과부하, 유지보수 모드 점검
5xx504 Gateway Timeout게이트웨이 시간 초과백엔드 응답 시간, 네트워크 연결 확인

1xx 정보 제공 응답

1xx 상태 코드는 요청이 수신되었고 서버가 요청을 계속 처리하려 한다는 정보를 전달합니다. 실무에서는 웹소켓 전환이나 대용량 파일 업로드 시 Expect: 100-continue 헤더와 함께 자주 만날 수 있습니다. 이 응답만으로는 최종 결과를 알 수 없으므로, 항상 후속 응답을 확인해야 합니다.

2xx 성공 응답

2xx 코드는 요청이 성공했음을 의미합니다. 200 OK 상태 코드는 요청이 성공적으로 처리되었음을 나타내며, 성공의 의미는 HTTP 메소드에 따라 달라집니다. POST 요청 후 201 Created가 반환되면 새로운 리소스가 생성된 것이며, 응답 헤더의 Location 필드로 새 리소스의 URI를 확인할 수 있습니다. 그 외 204 No Content는 성공했지만 반환할 콘텐츠가 없을 때 사용됩니다.

3xx 리다이렉트 응답

3xx 코드는 요청을 완료하려면 추가 조치가 필요하다는 신호입니다. 영구 리다이렉트인 301과 임시 리다이렉트인 302의 차이는 SEO와 캐싱에 큰 영향을 미치므로, 상황에 맞게 선택해야 합니다. 이에 대한 자세한 비교는 301 vs 302 리다이렉트 차이점과 선택 가이드에서 확인할 수 있습니다. 304 Not Modified는 조건부 GET 요청 시 리소스가 변경되지 않았음을 알려주어 대역폭을 절약합니다.

4xx 클라이언트 오류

4xx 코드는 클라이언트 오류로 인해 요청이 실패했음을 의미합니다. 서버가 요청을 이해했지만 클라이언트 측의 문제로 처리하지 못한 경우입니다. 400 Bad Request는 요청 구문이 잘못되었거나 너무 큰 경우 발생합니다. 401 Unauthorized는 인증이 안 된 상태에서 보호된 자원에 접근한 것으로, 로그인 토큰이나 HTTP 인증 헤더를 점검하세요. 403 Forbidden은 인증은 되었으나 권한이 부족할 때 나타나며, 접근 제어 규칙을 확인해야 합니다. 404 Not Found 오류는 서버가 요청받은 리소스를 찾을 수 없음을 의미합니다.

5xx 서버 오류

5xx 코드는 서버 오류로 인해 요청이 실패했음을 의미합니다. 서버가 유효한 요청을 처리하지 못한 경우로, 운영자 입장에서 가장 신속히 대응해야 하는 신호입니다. 500 Internal Server Error는 서버가 처리 방법을 모르는 상황이 발생했음을 의미합니다. 502 Bad Gateway는 프록시나 게이트웨이 뒤의 업스트림 서버가 잘못된 응답을 보낼 때, 503 Service Unavailable은 서버가 과부하 상태이거나 점검 중일 때, 504 Gateway Timeout은 백엔드 서버가 정해진 시간 안에 응답하지 못할 때 반환됩니다. 이러한 오류들은 서버 로그에서 스택 트레이스나 관련 에러 메시지를 통해 원인을 파악할 수 있습니다.

상태 코드를 빠르게 확인하는 방법

실제로 문제가 발생했을 때 해당 페이지의 상태 코드를 확인하려면 다음과 같은 방법을 사용할 수 있습니다.

  • 브라우저 개발자 도구: F12를 눌러 네트워크 탭에서 요청을 선택하면 Status 항목으로 확인됩니다.
  • curl 명령어: 터미널에서 curl -I https://websalim.com과 같이 -I 옵션을 주면 헤더와 함께 HTTP 상태 코드를 출력합니다.
  • 온라인 HTTP 상태 코드 검사기: 여러 무료 서비스를 통해 URL을 입력하고 리다이렉트 체인까지 포함한 응답 코드를 볼 수 있습니다.

서버 오류 진단 절차

서버 오류가 감지되면 다음 단계를 따라 원인을 좁혀 나갑니다.

  1. 서버 로그 즉시 확인하기 웹 서버(아파치, Nginx)와 애플리케이션 서버(PHP-FPM, Node.js)의 에러 로그에서 5xx 오류 발생 시점의 메시지를 찾습니다. 대부분의 경우 구체적인 오류 스택 트레이스가 기록되어 있어 원인 파일과 라인 번호까지 파악할 수 있습니다.

  2. 요청 시점과 재현 환경 재구성하기 오류가 발생한 URL, HTTP 메소드, 파라미터, 사용자 환경(브라우저, IP)을 기록하고 동일한 조건으로 재현해 봅니다. 재현되지 않으면 일시적 과부하나 외부 API 장애일 가능성이 높습니다.

  3. 리다이렉트 체인 검증하기 URL 리다이렉트가 연쇄적으로 발생하면 중간에서 루프를 형성하거나 잘못된 곳으로 이동해 404나 500을 유발할 수 있습니다. curl -L -v [# 예시 URL]을 통해 전체 리다이렉트 경로를 추적하고 중복되거나 잘못된 리다이렉트를 수정합니다. DNS 설정과 리다이렉트의 상호작용도 함께 점검하면 좋습니다.

  4. DNS 및 네트워크 연결 상태 점검하기 도메인의 DNS 레코드가 올바르게 설정되어 있고, 서버의 IP 주소가 정확한지 확인합니다. nslookup이나 dig 명령어로 실제 IP를 조회하고, 서버가 수신 대기 중인 포트에 방화벽이 막고 있지 않은지 텔넷 등으로 확인합니다.

  5. 외부 API와 데이터베이스 연결 테스트하기 502/504 오류는 백엔드 서비스가 응답하지 않을 때 자주 발생합니다. 서버에서 해당 서비스의 엔드포인트로 핑을 보내거나 간단한 쿼리를 실행하여 응답 시간을 측정하세요. 연결 풀이 부족하거나 커넥션 타임아웃 값이 너무 짧으면 간헐적 오류로 이어집니다.

  6. 서버 리소스 모니터링하기 CPU, 메모리, 디스크 I/O, 네트워크 대역폭 사용률이 임계치를 넘었는지 확인합니다. 지속적으로 높은 부하라면 서버 사양 확장이나 로드 밸런싱을 고려해야 합니다.

  7. 변경 사항 및 배포 이력 확인하기 최근에 적용한 코드 배포, 설정 변경, 플러그인 업데이트 등을 체크리스트로 확인합니다. 오류 발생 시점 직전에 반영된 요소가 있다면 일시적으로 롤백하여 문제 해결 여부를 판단합니다.

실무에서 자주 마주치는 오류 상황별 대처 요약

  • 404 발생, 분명히 파일이 있는데: 웹 서버 루트 경로 설정이나 리라이트 규칙에서 요청을 엉뚱한 경로로 보내고 있을 수 있습니다. 특히 .htaccess의 RewriteRule을 의심합니다.
  • 로그인 후 401 반복: 세션 쿠키가 제대로 설정되지 않았거나 JWT 토큰의 만료 시간이 짧게 설정된 경우입니다. 브라우저 개발자 도구에서 쿠키와 Authorization 헤더를 검사합니다.
  • 간헐적인 503 서비스 불가: 백엔드 서버가 간헐적으로 재시작되거나 상태 확인(health check)을 통과하지 못하면 로드 밸런서가 해당 인스턴스를 제외시키면서 나타납니다. auto-scaling 그룹의 최소 인스턴스와 상태 확인 경로를 확인하세요.
  • 백엔드 API만 504 타임아웃: 프록시 서버의 타임아웃 설정이 백엔드 실제 처리 시간보다 짧을 때 발생합니다. Nginx의 proxy_read_timeout 값을 늘리거나 백엔드 코드를 최적화합니다.

참고 자료