# 프록시를 통한 504 Gateway Timeout: 원인과 해결 방법

> 504 Gateway Timeout은 게이트웨이가 뒤 서버 응답을 너무 오래 기다렸다는 의미입니다. 주거용 프록시, 타임아웃 설정, 재시도 권장 사항 관련 원인들입니다.

- URL: https://crawlrelay.com/ko/docs/errors/504-gateway-timeout/
- 마지막 업데이트: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

HTTP 상태 코드 (5xx, 서버 오류): 각 도구에서 정확한 메시지, 가능한 원인들의 순서, 그리고 효과적인 해결 방법.

**빠른 답변 — 프록시에서 504 Gateway Timeout는 무엇을 의미하나요?**

**504 Gateway Timeout**은 프록시나 사이트 CDN 같은 게이트웨이가 뒤 서버 응답을 너무 오래 기다려 중단했음을 뜻합니다. CrawlRelay 주거용 프록시를 통해 일반적으로 느린 연결은 대상이나 출구의 가정 연결입니다. 새 출구에서 1회 재시도하고 페이지를 가볍게 유지하며, 자체 클라이언트 타임아웃을 설정해 느린 요청을 사용자가 정한 조건에서 실패시키세요.

## 504 Gateway Timeout 한눈에 보기

| 속성 | 값 |
| --- | --- |
| 오류 | 504 Gateway Timeout |
| 유형 | HTTP 상태 코드 (5xx, 서버 오류) |
| 전송 주체 | 프록시 게이트웨이 또는 대상 앞의 CDN |
| 정의 위치 | RFC 9110, section 15.6.5 |
| 다시 시도할까요? | 예, 새 출구에서 1~2회 가능 |
| 먼저 확인하세요 | 프록시 없이 동일 요청의 시간을 측정하세요 |

## 504 Gateway Timeout가 무엇을 의미하나요?

RFC 9110은 504를 필요 서버로부터 제때 응답을 받지 못한 게이트웨이 상태로 정의합니다. 502는 잘못된 응답, 504는 시간 내 응답 없음입니다.

주거용 프록시는 직접 요청에 없는 홉을 추가합니다: 트래픽이 게이트웨이 → 가정 연결 → 사이트로 갑니다. 각 홉이 지연을 더하며 가장 느린 홉이 전체 지연을 결정합니다.

## Python, curl, Node.js, 브라우저에서 a 504는 어떻게 나타나나요?

같은 실패가 도구마다 다르게 출력됩니다. 로그에서 검색할 메시지들:

- **Python requests:** `status_code == 504`, HTTPS 대상은 `Tunnel connection failed: 504 Gateway Timeout`
- **curl:** `curl: (56) CONNECT tunnel failed, response 504`
- **Scrapy:** 기본 재시도 (504는 `RETRY_HTTP_CODES`에 포함)
- **CDN 서비스 사이트:** 504 상태의 CDN 오류 페이지

## a 504의 원인은 무엇인가요?

가장 가능성 높은 첫 번째 원인:

- **느린 대상 서버**, 예를 들어 검색 페이지가 몇 초 걸려 생성되는 경우
- **느린 출구**, 약한 가정 연결 또는 혼잡한 모바일 셀
- **게이트웨이의 인내심보다 큰 대용량 응답**
- **사이트의 오리진 서버가 CDN 뒤에서 타임아웃 됨, CDN이 504 응답**

## a 504를 단계별로 진단하는 방법은?

1. 프록시 없이 요청 시간을 측정하세요. 집에서도 느리면 대상 서버 문제입니다.
2. 새 출구에서 재시도 후 시간 비교.
3. 응답 크기 확인: 5MB 페이지와 50KB 페이지는 문제 유형이 다릅니다.
4. 본문을 읽어 CDN과 프록시 중 누가 오류 페이지를 썼는지 확인.

*curl로 실패한 URL 테스트하기(HTTP 포트, 상세 모드)*

```bash
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:PASSWORD@gw.crawlrelay.com:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL
```

## a 504를 어떻게 고치나요?

- **명확한 타임아웃 설정**: 일반 페이지는 연결 10초, 읽기 30~60초 권장
- **출구를 바꿔 1~2회 재시도**
- **요청량 줄이기**: HTML이나 JSON API만 필요하면 이미지, 미디어 건너뛰기
- **중대형 페이지는 대상 국가 비혼잡 시간대에 예약 실행**

*Python httpx: 명시적으로 연결, 읽기, 쓰기 및 풀 타임아웃 설정하기*

```python
import httpx

proxy = "http://USERNAME:PASSWORD@gw.crawlrelay.com:7777"
timeout = httpx.Timeout(connect=10.0, read=30.0, write=10.0, pool=10.0)

with httpx.Client(proxy=proxy, timeout=timeout) as client:
    try:
        r = client.get("https://api.ipify.org")
        print(r.status_code, r.text)
    except httpx.TimeoutException as exc:
        print("timed out:", type(exc).__name__)  # ConnectTimeout, ReadTimeout...
```

## a 504 이후에 다시 시도해야 하나요?

새로운 출구에서 504 오류가 발생하면 한두 번 재시도하세요. 같은 URL이 여러 출구에서 계속 시간 초과된다면 대상 서버가 느리거나 과부하 상태입니다: 해당 호스트의 요청 속도를 낮추거나 나중에 다시 시도하세요. 클라이언트 시간 초과 시간을 올리는 것은 게이트웨이의 제한 시간이 아니라면 도움이 됩니다.

## 504 Gateway Timeout가 CrawlRelay에 어떻게 적용되나요?

세션 ID 없이 CrawlRelay에 새로 연결할 때마다 일반적으로 다른 주거용 출구가 할당되므로, 재시도는 보통 다른 홈 연결을 테스트합니다. 느린 대상 서버의 경우 전송하는 데이터 크기를 작게 유지하고, 첫 바이트 도착 시간과 전체 다운로드 시간을 별도로 측정하세요.

게이트웨이: `gw.crawlrelay.com`, 포트 7777 (CONNECT를 통한 HTTP, HTTPS) 및 포트 7778 (SOCKS5). 사용자 이름 형식: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. 관련: [502 Bad Gateway](https://crawlrelay.com/ko/docs/errors/502-bad-gateway/) · [읽기 시간 초과](https://crawlrelay.com/ko/docs/errors/read-timeout/) · [503 서비스 이용 불가](https://crawlrelay.com/ko/docs/errors/503-service-unavailable/).

## 504 Gateway Timeout: 개발자들이 묻는 질문들

### 502와 504의 차이는 무엇인가요?

둘 다 게이트웨이에서 나오는 응답입니다. 502는 게이트웨이 뒤 서버가 잘못된 응답을 보내거나 연결을 끊었을 때 발생합니다. 504는 제시간에 아무 응답도 받지 못했을 때 발생합니다. 주거용 프록시의 경우 502는 출구 연결 끊김, 504는 느린 대상 서버나 홈 연결을 의미하는 경우가 많습니다.

### 프록시의 시간 초과 시간을 늘릴 수 있나요?

게이트웨이의 내부 시간 초과가 아니라 클라이언트 시간 초과를 제어하세요. 연결 및 읽기 시간 초과를 명확히 설정하여 느린 요청이 예측 가능하게 실패하도록 하고, 새 출구에서 재시도하며, 페이지를 가볍게 만드세요. 대상 서버가 매우 긴 응답을 요구할 경우 API나 더 가벼운 페이지를 대신 요청하세요.

### 모바일 프록시가 주거용 프록시보다 느린가요?

모바일 출구는 같은 셀 안에서 여러 사용자와 자원을 공유하므로 속도가 신호 강도와 부하에 따라 변할 수 있습니다. 모바일 IP는 모바일에서 필요한 대상에, 주거용 IP는 대량 크롤링에 사용하세요. 각 출구 유형별 응답 시간을 직접 측정해 결정하세요.

## 이 참조에서 다른 프록시 오류들

- [401 Unauthorized vs 407](https://crawlrelay.com/ko/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/ko/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/ko/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/ko/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/ko/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/ko/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/ko/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/ko/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/ko/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/ko/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/ko/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/ko/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/ko/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/ko/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/ko/docs/errors/ssl-wrong-version-number/)

**실패 사례를 다루는 문서가 있는 레지덴셜 프록시들** US$0.50/GB의 레지덴셜 프록시 CrawlRelay개, 트래픽이 절대 만료되지 않음. [가격 확인](https://crawlrelay.com/ko/pricing/) · [빠른 시작](https://crawlrelay.com/ko/docs/)

---

CrawlRelay: CrawlRelay는 개발자 중심의 회전형 레지덴셜 프록시 및 4G/5G 모바일 프록시 서비스로, 스크래퍼와 AI 데이터 파이프라인을 위한 비만료 선불 과금 트래픽을 US$0.50/GB부터 암호화폐로 결제하며 신분증 업로드가 없습니다. KYC 없이 — 신분증, 셀카, 문서 없이 이용 가능. 암호화폐로 결제하세요.
