curl — HTTP 요청과 진단

Linux / 네트워크 및 방화벽 / curl.html

네트워크 및 방화벽원문등록 2026-10-18

💬 "curl 명령어"

curl은 HTTP 요청을 보내고 응답을 확인합니다. 웹/API 점검의 표준 도구입니다.

-I로 헤더만, -s/-o로 조용히, -m으로 타임아웃을 지정하는 조합을 자주 씁니다.

  • 개념: 다양한 프로토콜로 요청을 보내고 응답을 출력합니다.
  • 상태코드: -o /dev/null -w '%{http_code}'로 코드만 뽑습니다.
  • 헤더: -I로 응답 헤더를 봅니다.
  • 본문: 기본으로 응답 본문을 출력합니다.

자주 쓰는 옵션

옵션설명
-I헤더만 요청(HEAD)합니다
-s진행/오류 출력을 숨깁니다
-m <초>전체 작업 타임아웃을 지정합니다
-w '%{http_code} %{time_total}'상태코드·소요시간을 출력합니다
-o /dev/null본문을 버립니다

필수 명령어 조합 3가지

  • curl -sI https://example.com | head -1 — 응답 상태와 서버 헤더 확인
  • curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1/health — 헬스체크 상태코드 확인
  • curl -s -m 5 -X POST -H 'Content-Type: application/json' -d '{"ping":true}' http://127.0.0.1/api/ping — API 동작 확인

💬 "운영 정책에 맞춰 쓰는 예시 하나 보여줘"

실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.

1단계 · 상태코드 확인

서비스가 응답하는지 먼저 봅니다.

curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1/health

2단계 · 헤더 확인

리다이렉트·캐시·서버 정보를 봅니다.

curl -sI http://127.0.0.1/ | head

3단계 · 타이밍 확인

지연 구간을 파악합니다.

curl -s -o /dev/null -w '%{http_code} dns=%{time_namelookup} total=%{time_total}\n' http://127.0.0.1/

실무에서는 이렇게 씁니다

1. 배포 후 헬스체크

상황 — 배포 직후 서비스가 정상인지 확인합니다.

for i in 1 2 3; do curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1/health; sleep 1; done

결과 — 연속으로 200이 나오면 정상으로 판단합니다.

포인트 — 배포 스크립트에 헬스체크를 넣으면 자동 롤백 기준으로 쓸 수 있습니다.

2. 응답 지연 구간 분석

상황 — 외부 API 호출이 느립니다.

curl -s -o /dev/null -w 'dns=%{time_namelookup} conn=%{time_connect} tls=%{time_appconnect} total=%{time_total}\n' https://api.example.com/

결과 — DNS/TCP/TLS/전체 시간을 나눠 병목 구간을 찾습니다.

포인트 — DNS가 크면 리졸버를, TLS가 크면 인증서/핸드셰이크를 점검합니다.

주의할 점

  • 자동화에서 -m을 빼면 무한 대기할 수 있습니다.
  • -k(인증서 무시)는 진단용으로만 쓰고 운영 스크립트에는 넣지 않습니다.
  • 토큰/비밀번호를 명령줄에 넣으면 히스토리에 남습니다.
  • 외부 URL 호출은 프록시/방화벽에 따라 실패할 수 있습니다.

실제 실행 화면

헬스체크 상태코드와 응답 시간, 서버 헤더를 확인한 결과입니다.

curl 명령어 실행 결과: HTTP 상태와 응답 시간

실제 운영 중인 서버

이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.