HTTP 상태 코드 조회
고빈도 상태 코드
검색 결과 (77)
| 코드 | 그룹 | 이름 | 설명 |
|---|---|---|---|
| 100 | 1xx | Continue | 已收到请求头,客户端应继续发送请求体 |
| 101 | 1xx | Switching Protocols | 服务器正按 Upgrade 切换协议(如 WebSocket) |
| 102 | 1xx | Processing | 已接受请求,处理尚未结束(WebDAV) |
| 103 | 1xx | Early Hints | 在最终响应前返回 Link 等提示以预加载资源 |
| 104 | 1xx | Upload Resumption Supported | 表明支持可恢复上传(IANA 临时注册,详见 httpbis 可恢复上传草案) |
| 200 | 2xx | OK | 请求成功 |
| 201 | 2xx | Created | 已创建资源 |
| 202 | 2xx | Accepted | 已接受,尚未处理完成(异步任务常见) |
| 203 | 2xx | Non-Authoritative Information | 成功,表示可能来自代理/缓存 |
| 204 | 2xx | No Content | 成功,无响应体 |
| 205 | 2xx | Reset Content | 成功,客户端应重置文档或表单视图 |
| 206 | 2xx | Partial Content | 成功返回部分内容(Range) |
| 207 | 2xx | Multi-Status | 多状态 XML响应(WebDAV) |
| 208 | 2xx | Already Reported | DAV 绑定成员已在先前响应中列出(WebDAV) |
| 226 | 2xx | IM Used | 已应用实例操作(Delta 编码,RFC 3229) |
| 300 | 3xx | Multiple Choices | 多种表示可选,需选择或重定向 |
| 301 | 3xx | Moved Permanently | 资源永久迁移至新 URI |
| 302 | 3xx | Found | 资源临时位于其他 URI |
| 303 | 3xx | See Other | 应使用 GET 访问另一 URI 获取结果 |
| 304 | 3xx | Not Modified | 缓存仍有效 |
| 305 | 3xx | Use Proxy | 须经由代理(已弃用,不建议实现) |
| 306 | 3xx | (Unused) | 历史占位,HTTP/1.1 起未使用 |
| 307 | 3xx | Temporary Redirect | 临时重定向,方法与正文不变 |
| 308 | 3xx | Permanent Redirect | 永久重定向,方法与正文不变 |
| 400 | 4xx | Bad Request | 语法无效,无法解析 |
| 401 | 4xx | Unauthorized | 需身份验证(常配合 WWW-Authenticate) |
| 402 | 4xx | Payment Required | 预留,极少实现 |
| 403 | 4xx | Forbidden | 拒绝访问(与401 不同:未必缺凭证) |
| 404 | 4xx | Not Found | 未找到资源 |
| 405 | 4xx | Method Not Allowed | 该 URI 不支持此 HTTP 方法 |
| 406 | 4xx | Not Acceptable | 无法生成 Accept 可接受的表示 |
| 407 | 4xx | Proxy Authentication Required | 需先通过代理认证 |
| 408 | 4xx | Request Timeout | 等待请求超时 |
| 409 | 4xx | Conflict | 与资源当前状态冲突 |
| 410 | 4xx | Gone | 资源曾存在且已永久移除 |
| 411 | 4xx | Length Required | 缺少有效 Content-Length 等 |
| 412 | 4xx | Precondition Failed | 前置条件(如 If-*)不满足 |
| 413 | 4xx | Content Too Large | 请求体过大(RFC 9110 用语) |
| 414 | 4xx | URI Too Long | URI 过长 |
| 415 | 4xx | Unsupported Media Type | 不支持的媒体类型 |
| 416 | 4xx | Range Not Satisfiable | 无法满足 Range |
| 417 | 4xx | Expectation Failed | 无法满足 Expect 头 |
| 418 | 4xx | (Unused) | RFC 9110 标记未使用;典故为 RFC 2324「I'm a teapot」 |
| 421 | 4xx | Misdirected Request | 请求未指向能响应的服务器/连接(如 HTTP/2) |
| 422 | 4xx | Unprocessable Content | 语义可理解但无法处理(校验失败等) |
| 423 | 4xx | Locked | 资源被锁定(WebDAV) |
| 424 | 4xx | Failed Dependency | 依赖请求失败(WebDAV) |
| 425 | 4xx | Too Early | 拒绝可能重放的过早请求 |
| 426 | 4xx | Upgrade Required | 需升级到 Upgrade 指定的协议 |
| 428 | 4xx | Precondition Required | 源站要求条件请求以防冲突 |
| 429 | 4xx | Too Many Requests | 请求过于频繁,应限速 |
| 431 | 4xx | Request Header Fields Too Large | 请求头整体或单项过大 |
| 444 | vendor | No Response (nginx) | Nginx 直接关连接不返回状态行(常见于限流/屏蔽) |
| 451 | 4xx | Unavailable For Legal Reasons | 因法律原因不可提供 |
| 495 | vendor | SSL Certificate Error (nginx) | Nginx:客户端证书校验失败 |
| 496 | vendor | SSL Certificate Required (nginx) | Nginx:需要客户端证书 |
| 497 | vendor | HTTP to HTTPS Port (nginx) | Nginx:向 HTTPS 端口发送明文 HTTP |
| 499 | vendor | Client Closed Request (nginx) | 客户端在响应完成前关闭连接 |
| 500 | 5xx | Internal Server Error | 服务器内部错误 |
| 501 | 5xx | Not Implemented | 不支持该方法或能力 |
| 502 | 5xx | Bad Gateway | 网关从上游收到无效响应 |
| 503 | 5xx | Service Unavailable | 过载或维护,暂不可用 |
| 504 | 5xx | Gateway Timeout | 网关等待上游超时 |
| 505 | 5xx | HTTP Version Not Supported | 不支持请求中的 HTTP 版本 |
| 506 | 5xx | Variant Also Negotiates | 透明协商配置错误 |
| 507 | 5xx | Insufficient Storage | 存储空间不足(WebDAV) |
| 508 | 5xx | Loop Detected | 检测到循环(WebDAV) |
| 510 | 5xx | Not Extended | 需扩展(RFC 2774 实验状态,IANA 标为 OBSOLETED,可忽略) |
| 511 | 5xx | Network Authentication Required | 需在网络层认证(如强制门户) |
| 520 | vendor | Unknown Error (Cloudflare) | 源站返回异常或空响应 |
| 521 | vendor | Web Server Is Down (Cloudflare) | 无法与源站建立 TCP |
| 522 | vendor | Connection Timed Out (Cloudflare) | 与源站握手或连接超时 |
| 523 | vendor | Origin Is Unreachable (Cloudflare) | 无法路由到源站 |
| 524 | vendor | A Timeout Occurred (Cloudflare) | 源站已连接但未及时返回完整响应 |
| 525 | vendor | SSL Handshake Failed (Cloudflare) | 与源站 SSL 握手失败 |
| 526 | vendor | Invalid SSL Certificate (Cloudflare) | 源站证书无效 |
| 527 | vendor | Railgun Error (Cloudflare) | Railgun 边缘到源监听错误(Cloudflare 专用) |
1xx 정보/2xx 성공/3xx 리디렉션/4xx 클라이언트 오류/5xx 서버 오류의 5가지 카테고리와 벤더 확장 코드를 완벽하게 지원하는 무료 HTTP 상태 코드 참조 도구입니다. 카테고리 필터링과 키워드 검색을 지원하며 개발 디버깅에 필수입니다.
관련 추천
HTTP 상태 코드란 무엇인가요?
HTTP 상태 코드(HTTP Status Code)는 서버가 HTTP 요청에 응답할 때 반환하는 3자리 숫자 코드로, 요청 처리 결과를 나타냅니다——성공했는지 실패했는지? 실패했다면 클라이언트 문제인지 서버 문제인지? 리디렉션이 필요한지? 이것은 웹 개발과 운영에서 가장 기본적이고 중요한 진단 정보 중 하나입니다.
상태 코드는 첫 번째 자리 숫자에 따라 5가지 카테고리로 분류됩니다: **1xx 정보 응답**(요청 수신, 처리 계속, 실무에서는 잘 보지 못함); **2xx 성공**(요청이 정상 처리됨, 가장 흔한 것은 200 OK); **3xx 리디렉션**(클라이언트의 추가 작업 필요, 예: 301 영구 리디렉션, 302 임시 리디렉션, 304 캐시 히트); **4xx 클라이언트 오류**(요청에 문제 있음, 예: 400 파라미터 오류, 401 로그인 안 됨, 403 권한 없음, 404 찾을 수 없음, 429 속도 제한); **5xx 서버 오류**(서버 처리 실패, 예: 500 내부 오류, 502 Bad Gateway, 503 사용 불가, 504 타임아웃).
**왜 4xx와 5xx를 구분해야 하나요?** 이것은 트러블슈팅의 최우선 판단 사항입니다: 4xx가 보이면 먼저 자신의 요청을 확인해야 합니다——URL이 올바른지, 파라미터가 완전한지, Token이 포함되었는지, 권한이 충분한지, 요청이 너무 잦지 않은지; 5xx가 보이면 서버 로그를 확인해야 합니다——백엔드 프로세스가 정상인지, 데이터베이스가 연결되었는지, 설정이 올바른지, 과부하가 아닌지. 방향을 잘못 잡으면 디버깅에 막대한 시간을 낭비합니다.
**리디렉션 상태 코드의 차이는 빈출 주제입니다**: 301은 영구 리디렉션(SEO 가중치 이전, 브라우저 캐시), 302는 임시 리디렉션(가중치 이전 안 함), 307/308은 요청 메서드를 엄격히 유지(POST가 GET으로 변경되지 않음). 실무에서는 HTTPS 전환, 도메인 이전에 301을, 임시 유지보수에 302를, POST 폼 제출 후 리디렉션에 303(PRG 패턴)을 사용합니다.
본 도구는 **모든 표준 HTTP 상태 코드**(혼동하기 쉬운 303/307/308, 405/409/422/429 등 포함)와 Cloudflare/Nginx 등 자주 사용되는 벤더 확장 코드(520-527, 499)를 **완벽하게 수록**하고 있습니다. 카테고리 필터링, 키워드 검색, 바로가기 카드를 지원하며 개발 디버깅, API 트러블슈팅, 운영 장애 진단에 없어선 안 될 일상적인 참조 도구입니다.
사용 사례
- Web/API 개발 디버깅: API 오류 시 상태 코드 의미를 빠르게 조회하여 트러블슈팅 방향 판단(프론트엔드 파라미터인지 백엔드 버그인지)
- API 연동 트러블슈팅: 401 인증 실패, 403 권한 부족, 404 주소 오류, 500 서버 오류 구분
- 운영 장애 트러블슈팅: 502/503/504/522/524 오류 발생 시 원인과 해결책 빠르게 파악
- SEO 작업: 301/302 리디렉션 유형이 올바른지 확인, 404 오류 페이지 처리가 적절한지 점검
- HTTP 프로토콜 학습: 초보자가 HTTP 상태 코드 분류와 각 코드의 용도를 체계적으로 학습
- 면접 준비: 프론트엔드/백엔드 면접에서 자주 나오는 301 vs 302, 401 vs 403, 502 vs 504 차이 확인
- 로그 분석: Nginx/Apache/CDN 액세스 로그 분석 시 각 상태 코드 의미 이해
이용 방법
- 검색창에 상태 코드 번호(예: 404) 또는 키워드(redirect, forbidden, timeout 등)를 입력
- 또는 카테고리 버튼(1xx/2xx/3xx/4xx/5xx/vendor)을 클릭하여 카테고리별로 탐색
- 자주 사용되는 상태 코드 카드를 클릭하면 해당 코드를 빠르게 필터링
- 상태 코드의 이름, 카테고리 색상, 자세한 설명 확인
- 복사 버튼을 클릭하여 현재 필터 요약을 복사하여 트러블슈팅 기록에 사용
주요 기능
- 완벽한 지원: 표준 1xx-5xx 상태 코드 + Cloudflare/Nginx 벤더 확장 코드(5xx vendor), 한 곳에서 모두 확인
- 바로가기 카드: 가장 자주 사용되는 12개 코드(200/301/302/304/400/401/403/404/429/500/502/503), 카드를 클릭하여 직접 세부 정보 보기
- 카테고리 필터링: 1xx/2xx/3xx/4xx/5xx/vendor 카테고리로 원클릭 필터링, 문제 유형 빠르게 파악
- 키워드 검색: 상태 코드 번호, 영어 이름, 설명으로 퍼지 검색을 지원하여 대상 코드를 빠르게 찾기
- 색상 구분: 2xx 녹색(성공), 3xx/4xx 노란색(주의/클라이언트 문제), 5xx 빨간색(서버 문제)으로 시각적으로 직관적 판단
- 데스크톱 테이블/모바일 카드: 데스크톱에서는 전체 테이블 뷰, 모바일에서는 반응형 카드 뷰로 모든 디바이스에서 편리하게 사용
- 필터 결과 요약 원클릭 복사: 현재 필터 조건과 결과 개수를 복사하여 티켓/문서 기록에 활용
자주 묻는 질문
HTTP 상태 코드란 무엇인가요?
HTTP 상태 코드는 서버가 클라이언트의 HTTP 요청에 대해 반환하는 3자리 숫자 코드로, 요청이 성공했는지 실패했는지 또는 추가 작업이 필요한지 여부를 나타냅니다. 5가지 카테고리로 분류됩니다: 1xx 정보, 2xx 성공, 3xx 리디렉션, 4xx 클라이언트 오류, 5xx 서버 오류. 개발 디버깅 시 상태 코드를 통해 문제 방향을 빠르게 파악할 수 있습니다: 2xx 성공은 조치 불필요; 4xx는 요청 파라미터/인증/권한/속도 제한 확인; 5xx는 서버 로그 확인.
301과 302 리디렉션의 차이는 무엇인가요?
핵심 차이: 301은 **영구 리디렉션**으로 브라우저/검색 엔진이 새 주소를 캐시하고 SEO 가중치가 새 URL로 이전됩니다; 302는 **임시 리디렉션**으로 캐시되지 않고 가중치도 이전되지 않습니다. 메서드 변경에도 중요한 차이가 있습니다: 역사적으로 301/302는 POST를 GET으로 변경할 수 있었지만(엄격하지 않은 동작), 307/308은 원래 요청 메서드를 엄격히 유지합니다. HTTPS 전환, 도메인 이전, URL 영구 변경에는 301을; 임시 유지보수 리디렉션, 이벤트 페이지에는 302 또는 307을 사용하세요.
401과 403의 차이는 무엇인가요?
401 Unauthorized는 '인증되지 않음' — 당신이 누구인지 모르므로 먼저 로그인하거나 Token을 제공해야 합니다(보통 WWW-Authenticate 헤더를 동반합니다); 403 Forbidden은 '인증은 됐지만 권한 없음' — 서버가 당신이 누구인지 알고 있지만 이 리소스에 접근할 권한이 없습니다. 쉽게 말해: 401은 '출입증을 가져오지 않음', 403은 '출입증은 있지만 이 방에는 들어갈 수 없음'입니다.
502, 503, 504의 차이는 무엇인가요?
모두 서버 오류이지만 원인이 다릅니다: 502 Bad Gateway는 리버스 프록시가 업스트림에서 **무효한 응답**을 받았습니다(백엔드 크래시/프로토콜 오류); 503 Service Unavailable은 서버가 **일시적으로 사용 불가**합니다(과부하/유지보수/서비스 미가동); 504 Gateway Timeout은 프록시 서버가 **업스트림 대기 타임아웃**되었습니다(백엔드 처리 너무 느림/데이터베이스 느린 쿼리). 트러블슈팅 시: 502는 백엔드 프로세스가 살아있는지, 오류 로그 확인; 503은 서비스 상태/속도 제한/유지보수 페이지 확인; 504는 백엔드 성능/느린 쿼리/타임아웃 설정을 확인하세요.
200 OK와 204 No Content는 어떻게 구분하나요?
200 OK는 표준 성공 응답으로 응답 body를 반환할 수 있습니다(쿼리 결과, 생성 후 리소스 데이터 등); 204 No Content는 성공했지만 **응답 body를 반환하지 않음**을 나타내며 DELETE 삭제 성공, 데이터를 반환할 필요가 없는 PUT/POST 업데이트 성공에 자주 사용됩니다. 204 응답에는 body를 포함해서는 안 됩니다.
429 속도 제한 오류는 어떻게 처리하나요?
429 Too Many Requests는 클라이언트 요청 빈도가 서버 제한을 초과했음을 나타냅니다. 응답에는 보통 Retry-After 헤더가 포함되어 몇 초 후에 재시도해야 하는지 알려줍니다. 클라이언트는 지수 백오프(Exponential Backoff)를 구현해야 합니다: 첫 번째 재시도는 1초 대기, 두 번째는 2초, 세 번째는 4초... 또한 X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset 응답 헤더를 확인하여 속도 제한 할당량을 파악하세요.
Cloudflare의 520-527과 같은 벤더 확장 코드란 무엇인가요?
표준 HTTP 상태 코드는 100-599 범위에서 정의되고 대부분 IANA에 등록되어 있지만, CDN/프록시 서버 벤더는 자체 확장 코드를 정의합니다: Cloudflare는 오리진 연결 문제를 나타내는 520-527 시리즈를 정의하고(521 오리진 거부, 522 연결 타임아웃, 524 응답 타임아웃 등); Nginx는 499(클라이언트 연결 종료)를 정의합니다. 이 코드들은 표준 HTTP 코드는 아니지만 실제 운영 트러블슈팅에서 자주 나타나므로, 본 도구에는 자주 사용되는 벤더 확장 코드가 포함되어 있습니다.
용어집
- HTTP
- HyperText Transfer Protocol, 월드 와이드 웹 데이터 통신의 기반 프로토콜로 TCP/IP 기반에서 동작하며 요청-응답 모델을 사용합니다. 현재 주류 버전은 HTTP/1.1과 HTTP/2이며, HTTP/3은 QUIC 기반입니다.
- 멱등성 (Idempotence)
- 동일한 요청을 여러 번 실행해도 한 번 실행한 것과 효과가 같은 것입니다. GET/HEAD/PUT/DELETE/OPTIONS/TRACE는 멱등적입니다; POST는 멱등적이지 않습니다(여러 번 제출하면 여러 리소스가 생성됨). 307/308이 메서드를 유지하는 중요한 이유 중 하나는 멱등성을 유지하기 위해서입니다.
- CORS (교차 출처 리소스 공유)
- Cross-Origin Resource Sharing, 브라우저의 동일 출처 정책 하에서의 교차 출처 접근 메커니즘입니다. CORS 프리플라이트 요청(OPTIONS)이 405 Method Not Allowed나 CORS 관련 오류를 반환할 수 있으며, 프론트엔드 개발에서 가장 자주 접하는 문제 중 하나입니다.
- PRG 패턴 (Post/Redirect/Get)
- 웹 폼 제출 모범 사례: POST로 폼을 제출한 후 303 See Other로 결과 페이지로 리디렉션하여 사용자가 새로고침해도 중복 제출되지 않도록 합니다. 이것이 303의 가장 대표적인 사용 사례입니다.
- Retry-After
- HTTP 응답 헤더로, 503 Service Unavailable 또는 429 Too Many Requests와 함께 사용되어 클라이언트가 몇 초 후에 요청을 재시도할 수 있는지 알려줍니다.
- WWW-Authenticate
- HTTP 응답 헤더로, 401 Unauthorized와 함께 사용되어 클라이언트가 어떤 인증 스키마(Basic/Bearer/Digest 등)와 영역(realm)을 사용해야 하는지 알려줍니다.
- ETag / If-None-Match
- 캐시 검증 메커니즘입니다. 서버는 리소스 버전을 식별하는 ETag를 반환하고, 클라이언트는 다음 요청에서 If-None-Match 헤더를 전송합니다. 리소스가 변경되지 않았다면 서버는 304 Not Modified를 반환합니다(body 없음, 대역폭 절약).
- 리버스 프록시 (Reverse Proxy)
- 클라이언트와 백엔드 서버 사이에 위치한 프록시 서버(Nginx, Cloudflare, HAProxy 등)로, 클라이언트 요청을 받아 백엔드에 전달하고 백엔드 응답을 클라이언트에 반환합니다. 502/503/504 오류는 모두 리버스 프록시와 백엔드 사이에서 발생합니다.
HTTP 상태 코드 5가지 카테고리 개요
| 분류 | 의미 | 목적 | 자주 사용되는 코드 |
|---|---|---|---|
1xx | 정보 응답 (Informational) | 요청이 수신되어 처리 계속 중 (프로토콜 중간 상태) | 100 Continue, 101 Switching Protocols |
2xx | 성공 응답 (Success) | 요청이 서버에서 성공적으로 수신, 이해, 수용됨 | 200 OK, 201 Created, 204 No Content, 206 Partial Content |
3xx | 리디렉션 (Redirection) | 요청 완료를 위해 클라이언트의 추가 작업이 필요 | 301 Moved Permanently, 302 Found, 304 Not Modified, 307/308 |
4xx | 클라이언트 오류 (Client Error) | 요청에 구문 오류가 있거나 실행 불가, 클라이언트 측 원인 | 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests |
5xx | 서버 오류 (Server Error) | 서버가 명백히 유효한 요청 처리에 실패, 서버 측 원인 | 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable, 504 Gateway Timeout |
자주 사용되는 리디렉션 코드 비교(301/302/303/307/308)
| 코드 | 이름 | 영구적 | 메서드 변경 | 캐시 가능 | 대표적인 사용 사례 |
|---|---|---|---|---|---|
301 | Moved Permanently | ✅ 영구 | POST가 GET으로 변경될 수 있음(역사적 호환) | ✅ 기본적으로 캐시 | 사이트 개편, 도메인 이전, HTTP→HTTPS, 구 URL 폐기 |
302 | Found | ❌ 임시 | POST가 GET으로 변경될 수 있음(역사적 호환) | ❌ 기본적으로 캐시 안 함 | 임시 유지보수 리디렉션, 이벤트 페이지, A/B 테스트 |
303 | See Other | ❌ 임시 | POST→GET(명시적 변경) | ❌ 기본적으로 캐시 안 함 | POST 폼 제출 후 결과 페이지로 리디렉션(PRG 패턴) |
307 | Temporary Redirect | ❌ 임시 | 원래 메서드를 엄격히 유지 | ❌ 기본적으로 캐시 안 함 | 요청 메서드와 body를 엄격히 유지하는 임시 리디렉션 |
308 | Permanent Redirect | ✅ 영구 | 원래 메서드를 엄격히 유지 | ✅ 기본적으로 캐시 | POST가 GET으로 변경되지 않는 영구 리디렉션 |
흔한 클라이언트 오류 코드 트러블슈팅
| 코드 | 의미 | 흔한 원인 | 해결 방향 |
|---|---|---|---|
400 | Bad Request | 요청 구문 오류/파라미터 누락/JSON 형식 오류/헤더 너무 큼 | 요청 파라미터, Content-Type, URL 인코딩 확인 |
401 | Unauthorized | 인증 안 됨/Token 만료/Authorization 헤더 없음 | 로그인 상태, Token 만료 여부, Bearer 헤더 형식 확인 |
403 | Forbidden | 인증은 됐지만 권한 없음/IP 차단/CSRF Token 무효/WAF 차단 | 사용자 권한, IP 화이트리스트, WAF 규칙, CSRF Token 확인 |
404 | Not Found | URL이 존재하지 않음/리소스 삭제됨/라우팅 설정 오류 | URL 철자, 라우팅 설정, 리소스 삭제 여부 확인 |
405 | Method Not Allowed | 요청 메서드가 잘못됨(GET 전용 엔드포인트에 POST 등) | HTTP 메서드(GET/POST/PUT/DELETE 등), CORS 프리플라이트 확인 |
408 | Request Timeout | 클라이언트 요청 전송이 너무 느림/네트워크 지연/서버 타임아웃 설정 너무 짧음 | 네트워크 연결 확인, 타임아웃 시간 증가, 분할 업로드 |
409 | Conflict | 리소스 충돌(중복 생성, 버전 충돌, 동시 수정 등) | 중복 제출 여부 확인, 낙관적 락/멱등성 키 사용 |
413 | Payload Too Large | 업로드 파일/요청 body가 서버 제한 초과 | nginx client_max_body_size 확인, 파일 압축, 청크 업로드 |
422 | Unprocessable Entity | 요청 형식은 맞지만 의미적 오류(필드 검증 실패 등) | RESTful API 파라미터 검증, 필수 필드, 데이터 타입, 형식 확인 |
429 | Too Many Requests | 속도 제한 도달/요청 빈도 너무 높음 | 요청 빈도 낮추기, 재시도 백오프 추가, 상향 요청 |
흔한 서버 오류와 Cloudflare 확장 코드
| 코드 | 의미 | 흔한 원인 |
|---|---|---|
500 | Internal Server Error | 서버 코드 예외/캐치되지 않은 오류/데이터베이스 연결 실패/설정 오류 |
501 | Not Implemented | 서버가 요청된 기능을 지원하지 않음(지원하지 않는 HTTP 메서드 등) |
502 | Bad Gateway | 리버스 프록시(nginx/CDN)가 업스트림에서 무효한 응답 수신/백엔드 프로세스 크래시/PHP-FPM 미가동 |
503 | Service Unavailable | 서버 과부하/유지보수 중/백엔드 서비스 미가동/커넥션 풀 고갈 |
504 | Gateway Timeout | 리버스 프록시가 업스트림 응답 대기 타임아웃/백엔드 처리 너무 느림/데이터베이스 느린 쿼리 |
520 | Web Server Returned Unknown Error (CF) | Cloudflare: 오리진이 알 수 없거나 비정상적인 응답을 반환함(프로토콜 오류/빈 응답/상태 코드 없음) |
521 | Web Server Is Down (CF) | Cloudflare: 오리진 서버가 연결 거부(오리진 다운/방화벽이 CF IP 차단) |
522 | Connection Timed Out (CF) | Cloudflare: 오리진과 TCP 연결을 설정할 수 없음(오리진 방화벽/보안 그룹/iptables) |
523 | Origin Is Unreachable (CF) | Cloudflare: 오리진 IP에 도달할 수 없음(오리진 서버가 존재하지 않음/라우팅 문제) |
524 | A Timeout Occurred (CF) | Cloudflare: TCP 연결은 성공했지만 오리진이 HTTP 응답 반환 타임아웃(>100초), 느린 쿼리/장시간 작업에서 발생 |
499 | Client Closed Request (Nginx) | Nginx 확장 코드: 서버가 응답을 반환하기 전에 클라이언트가 연결을 닫음(사용자 취소/프론트엔드 타임아웃) |
Authoritative References
- ReferenceMDN - HTTP 응답 상태 코드
- ReferenceRFC 9110 - HTTP 의미 표준
- ReferenceWikipedia - HTTP 상태 코드
- ReferenceCloudflare 5xx 오류 트러블슈팅
- 인증 헤더 생성기
- Cache-Control 파서
- Content-Disposition 파서
- CORS 헤더 생성기
- CORS 검사기
- CSP 빌더
- cURL 코드 생성기
- DNS 글로벌 전파 확인
- DNS 조회
- Forwarded Header 파서
- Hreflang 태그 생성기
- HSTS 분석기
- HTTP 쿠키 파서
- HTTP Headers Checker
- HTTP 요청 테스터
- HTTP 상태 코드 조회
- IP 위치 조회
- IPv4 변환기
- IPv4 범위 확장기
- IPv6 툴박스
- Link 헤더 파서
- MX 레코드 조회
- 포트 체커
- 쿼리 스트링 빌더
- Rate Limit 헤더 파서
- 리다이렉트 체인 검사기
- Robots.txt 생성기
- Robots.txt 검사기
- 보안 헤더 검사기
- Security.txt 생성기
- Set-Cookie 파서
- 사이트 네트워크 감사
- Sitemap 생성기
- Sitemap 검사기
- SSL 인증서 검사기
- 서브넷 계산기
- URL 파서
- User-Agent 파서
- UTM 링크 생성기
- WebSocket 테스트
- 내 IP는 무엇인가요?
- WHOIS 조회