기술 가이드

cURL 오류 28(연결 시간 초과) 해결 가이드

6 min read WordPress 업데이트됨 12 Sep 2025
WordPress cURL 오류 28(연결 시간 초과) 해결 방법
WordPress cURL 오류 28(연결 시간 초과) 해결 방법

cURL 오류 28: 연결 시간 초과 문제 해결

이 가이드는 WordPress에서 발생하는 cURL 오류 28의 원인과 WR(워드프레스 전문가) 권장 해결책을 단계별로 설명합니다. 단계별 체크리스트와 역할별(운영자, 개발자, 호스팅 지원) 점검 항목도 포함되어 있어 실제 문제 해결에 바로 활용할 수 있습니다.

개요 — cURL 오류 28이란?

cURL(Client URL)은 웹사이트가 API 요청을 보내고 응답을 받아 서버/데이터베이스와 데이터를 주고받게 해주는 라이브러리입니다. 이 요청-응답 과정에서 지정된 시간 안에 응답을 받지 못하면 “cURL 오류 28: Connection timed out”(연결 시간 초과) 오류가 발생합니다.

주요 원인:

  • 워드프레스 방화벽 또는 보안 플러그인이 외부 API 요청을 차단
  • 잘못된 DNS 설정이나 특정 플러그인 충돌
  • 호스팅사 수준에서 설정된 낮은 타임아웃/리소스 제한
  • SSL 설정 불일치 또는 만료된 인증서

참고: “타임아웃”은 요청을 기다리는 최대 시간을 초과했음을 의미합니다. WordPress 내부적으로는 wp_remote_get 등 HTTP 요청의 기본 타임아웃 값이 짧게 설정되어 있을 수 있습니다(환경에 따라 다름).

사전 점검(실행 전)

다음 기본 점검을 먼저 수행하세요. 간단하지만 많은 경우 이 단계로 문제를 해결할 수 있습니다.

  • 호스팅 서버에서 최신 cURL 라이브러리, PHP, OpenSSL을 사용 중인지 확인하세요.
  • 다른 브라우저나 시크릿(인코그니토) 모드로 시도해 보세요.
  • 최근에 설치한 플러그인이나 테마 업데이트가 있다면 메모해 두세요.

1) 워드프레스 방화벽(보안 플러그인) 비활성화

방화벽이나 보안 플러그인은 외부 API 요청을 차단해 cURL 오류를 유발할 수 있습니다. 임시로 비활성화하고 문제가 해결되는지 확인하세요.

  1. WordPress 관리자 페이지에 로그인합니다. 플러그인 비활성화 화면의 스크린샷
  2. 플러그인(Plugins) 메뉴로 이동해 방화벽/보안 플러그인을 찾아 비활성화(Deactivate) 합니다.

문제가 해결되면 방화벽의 로그를 확인해 어떤 API 요청이 차단되었는지 파악하고, 필요한 예외(allowlist)를 추가하세요.

중요: 보안 플러그인을 완전히 삭제하기 전에 로그와 설정을 확인해 차단된 엔드포인트만 허용하고 보안 기능은 재활성화하세요.

2) 모든 플러그인 비활성화(문제 분리)

플러그인 충돌 여부를 확인하려면 모든 플러그인을 일괄 비활성화하고 문제가 해결되는지 확인합니다.

  1. 관리자 페이지에 로그인합니다.
  2. 플러그인 > 설치된 플러그인(Installed Plugins) 로 이동합니다.
  3. 상단 체크박스로 모든 플러그인을 선택한 뒤 모든 플러그인 일괄 비활성화 GIF
  4. 드롭다운에서 비활성화(Deactivate) 를 선택합니다.

문제가 해결되면 하나씩 플러그인을 활성화하면서 문제를 재현하여 원인 플러그인을 찾습니다.

3) DNS 서버 변경(클라이언트 측 테스트)

로컬 또는 서버의 DNS 문제로 인해 외부 엔드포인트에 연결할 수 없을 수 있습니다. Windows 예시:

  1. Windows + R을 눌러 실행창을 엽니다. 실행창 스크린샷
  2. ncpa.cpl 입력 후 확인(OK) 을 클릭해 네트워크 연결을 엽니다.
  3. 활성 네트워크를 우클릭해 속성(Properties) 를 선택합니다. 네트워크 연결 속성
  4. “이 연결은 다음 항목을 사용함(This connection uses the following items)”에서 인터넷 프로토콜 버전 4(TCP/IPv4) 를 선택한 뒤 속성(Properties) 클릭. IPv4 속성 대화상자
  5. “다음 DNS 서버 주소 사용(Use the following DNS server addresses)”을 선택하고, 기본 DNS에 8.8.8.8, 보조 DNS에 8.8.4.4(Google Public DNS)를 입력합니다. DNS 서버 설정 예시
  6. 확인(OK) 을 눌러 저장합니다.

공용 DNS(예: Google DNS)를 사용하면 로컬 ISP의 DNS 문제를 우회할 수 있습니다. 서버 측 DNS 문제라면 호스팅사에 문의하세요.

4) 브라우저 캐시 및 쿠키 삭제

브라우저 캐시가 오래된 응답을 유지해 문제처럼 보일 수 있습니다. Chrome 예시:

  1. Chrome을 열고 우측 상단의 세 점(더보기) 아이콘을 클릭합니다. Chrome 설정 아이콘
  2. 설정(Settings) > 개인정보 및 보안(Privacy & security) 로 이동합니다.
  3. 인터넷 사용 기록 삭제(Clear browsing data) 를 선택합니다. 브라우징 데이터 지우기 화면
  4. 기간(Time range)을 전체(All time) 로 설정하고, 쿠키 및 기타 사이트 데이터(Cookies and other site data), 캐시된 이미지 및 파일(Cache images and files) 을 선택한 뒤 데이터 삭제(Clear data) 를 클릭합니다. 데이터 삭제 옵션

캐시를 지운 뒤 문제가 해결되는지 확인합니다.

5) SSL 구성 점검

SSL 인증서의 잘못된 설치나 체인 불일치가 요청 실패를 유발할 수 있습니다.

  1. Qualys SSL Labs(SSL Server Test)로 이동합니다. Qualys SSL Labs 테스트 스크린샷
  2. 사이트 도메인을 입력하고 Submit(제출)합니다.

테스트 결과에서 인증서 체인, 프로토콜 지원, 만료 여부 등을 확인하세요. 문제 발견 시 인증서를 재설치하거나 SSL 공급업체의 지원을 받습니다.

6) 서버 제한 및 cURL 버전 확인

WordPress 대시보드에서 서버 정보 및 제한을 확인하세요.

  1. 대시보드에서 도구(Tools) > 사이트 상태(Site Health) 로 이동합니다. 사이트 상태 정보 메뉴
  2. 정보(Info) 탭을 클릭하고 서버(Server) 항목에서 cURL 버전, PHP 버전, 허용 메모리, 최대 실행 시간(max_execution_time) 등을 확인합니다.

만약 서버의 타임아웃이 지나치게 짧거나 리소스가 부족하면 호스팅사에 문의해 타임아웃 연장이나 리소스 증설을 요청하세요.

언제 이 방법들이 실패하는가(예외 사례)

  • 외부 API 자체의 응답 지연이나 다운 상태: 사이트 외부의 문제로, 서비스 제공자의 상태 페이지를 확인해야 합니다.
  • 네트워크 레벨(라우터/방화벽)에서 특정 포트 차단: 클라이언트/서버 양쪽의 네트워크 장비 설정 확인 필요.
  • 호스팅사가 임의로 outbound(발신) 요청을 차단한 경우: 호스팅사 정책으로 인해 해결이 불가능할 수 있음.

대안적 접근법

  • 서버 측에서 직접 cURL 명령으로 문제 재현(curl -v ) — 이 방법은 서버에서 엔드포인트로 직접 연결 가능한지 확인하는 데 유용합니다.
  • wp_remote_get에 ‘timeout’ 파라미터를 늘려 시도(임시 디버그 목적). 예: wp_remote_get($url, [‘timeout’ => 30]) — 단, 근본 원인 해결이 우선입니다.
  • 외부 API의 경우 레이트 리밋(rate limit) 확인 및 백오프(지수적 대기) 전략 적용.

역할 기반 체크리스트

  • 운영자(사이트 관리자): 플러그인 비활성화, 브라우저 캐시 삭제, 방화벽 설정 확인
  • 개발자: 서버 로그(예: PHP errorlog, 웹서버 액세스/에러 로그), wp_remote* 호출 코드 검토, 타임아웃 상수 확인
  • 호스팅 지원: 서버 네트워크/방화벽 설정, 아웃바운드 연결 정책, cURL/PHP/OpenSSL 버전 확인 및 필요 시 업데이트

표준 운영 절차(SOP) — 문제 해결 플레이북

  1. 재현: 오류 로그와 Site Health에서 cURL 오류 상세 확인
  2. 사전 점검: 플러그인/방화벽 비활성화, 브라우저 캐시 삭제
  3. 네트워크 점검: 서버와 클라이언트의 DNS 및 라우팅 확인
  4. SSL 점검: Qualys 테스트로 인증서 상태 확인
  5. 서버 리소스: 서버 제한(타임아웃, 메모리) 확인
  6. 외부 재확인: API 제공자 상태 확인
  7. 호스팅 문의: 위 단계 결과를 정리해 호스팅사에 전달
  8. 복구 및 모니터링: 문제 해결 후 비활성화한 보안 설정을 안전하게 되돌리고 모니터링 설정

테스트 케이스(수용 기준)

  • 시나리오 A: 방화벽 비활성화 후 요청 성공 → 수용 기준: 동일한 API 호출이 정상 응답(HTTP 200 등)을 반환
  • 시나리오 B: DNS를 공용 DNS로 변경 후 성공 → 수용 기준: DNS 변경 전/후 응답 시간 차이 확인
  • 시나리오 C: 서버의 타임아웃 상향 조정 후 성공 → 수용 기준: 타임아웃 변경 전후에 안정적으로 응답 획득

빠른 의사결정 흐름(Flowchart)

flowchart TD
  A[문제 감지: cURL 오류 28] --> B{플러그인/방화벽 활성화?}
  B -- 예 --> C[비활성화 후 재시도]
  B -- 아니오 --> D{DNS 문제일 가능성}
  C --> E{해결됨?}
  D --> F[공용 DNS로 변경 후 재시도]
  F --> E
  E -- 예 --> Z[문제 해결]
  E -- 아니오 --> G[SSL 구성 점검]
  G --> H{문제 발견?}
  H -- 예 --> I[인증서 재설치/공급사 연락]
  H -- 아니오 --> J[서버 타임아웃 및 리소스 확인]
  J --> K{호스팅 제한?}
  K -- 예 --> L[호스팅사에 요청]
  K -- 아니오 --> M[추가 로그 분석/개발자 개입]
  L --> Z
  I --> Z
  M --> Z

주요 사실 정리(Fact box)

  • WordPress의 일부 HTTP 함수는 기본 타임아웃이 짧게 설정될 수 있으므로(환경에 따라 다름) 요청 실패 시 타임아웃 값을 점검하세요.
  • 공용 DNS(예: 8.8.8.8)는 로컬 ISP의 DNS 문제를 우회하는 데 자주 사용됩니다.
  • SSL 인증서 체인 문제나 만료는 외부 연결 실패의 흔한 원인입니다.

간단 용어집(1줄)

  • cURL: 서버 간 HTTP 요청을 수행하는 라이브러리
  • 타임아웃: 요청이 응답을 기다리는 최대 시간
  • SSL 인증서 체인: 서버 인증서와 신뢰 루트 사이의 연결 정보

요약 및 권장 행동

  • 우선: 방화벽/보안 플러그인과 캐시를 점검하고 모든 플러그인을 일시적으로 비활성화하세요.
  • 다음: DNS를 공용 DNS로 변경해 네트워크 문제를 배제합니다.
  • SSL과 서버 제한(타임아웃, 메모리)을 점검하고, 필요 시 호스팅사에 문의하세요.
  • 문제 해결 후에는 보안 설정을 안전하게 되돌리고, 동일한 문제가 재발하지 않도록 모니터링을 설정하세요.

자주 묻는 질문(FAQ)

Q1: cURL 오류 28을 무시하고 사이트를 운영해도 괜찮나요?

아니요. 외부 API 호출 실패가 기능 저하(예: 소셜 로그인, 결제, 외부 데이터 표시)를 초래할 수 있으므로 근본 원인을 해결하는 것이 좋습니다.

Q2: 플러그인 하나씩 비활성화하는 번거로움을 피할 방법이 있나요?

스테이징 환경이나 로컬 복제본에서 순차적으로 재현 테스트를 하는 것이 안전합니다. 플러그인 충돌이 의심되면 개발자 도구로 네트워크 호출 로그를 확인하세요.

Q3: 호스팅사에 어떤 정보를 제공해야 하나요?

재현 절차, Site Health에서 캡처한 서버 정보(예: cURL/PHP 버전), 시도한 모든 해결 단계 및 로그(에러 로그, 웹서버 로그)를 제공하세요.


문제가 계속되면 아래 댓글로 현상(에러 로그, 발생 빈도, 최근 변경사항)을 남겨주시면 추가로 도와드리겠습니다.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Apache Tomcat 성능 카운터 및 이벤트 규칙 가이드
모니터링

Apache Tomcat 성능 카운터 및 이벤트 규칙 가이드

클릭재킹 완전 가이드: 보호 방법과 체크리스트
보안

클릭재킹 완전 가이드: 보호 방법과 체크리스트

안드로이드 홈 화면별 배경화면 설정 가이드
Android 가이드

안드로이드 홈 화면별 배경화면 설정 가이드

데이터 브로커에서 내 정보 삭제하는 방법
프라이버시

데이터 브로커에서 내 정보 삭제하는 방법

안드로이드 홈 화면별 배경화면 설정 가이드
안드로이드 커스터마이징

안드로이드 홈 화면별 배경화면 설정 가이드

Apache Tomcat 모니터링 및 관리 가이드
인프라 모니터링

Apache Tomcat 모니터링 및 관리 가이드