--- title: curl — HTTP 요청과 진단 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: HTTP 요청을 보내고 응답을 확인하는 도구. 서비스 점검·API 테스트에 필수. tags: 프로그램, 네트워크 및 방화벽, curl --- **💬 "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 상태와 응답 시간](https://games.cursorai.co.kr/assets/curl-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/network/curl.html