curl — HTTP 요청과 진단
Linux / 네트워크 및 방화벽 / curl.html
💬 "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 호출은 프록시/방화벽에 따라 실패할 수 있습니다.
실제 실행 화면
헬스체크 상태코드와 응답 시간, 서버 헤더를 확인한 결과입니다.

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