# 프록시 경유 502 Bad Gateway: 의미와 해결 방법

> 주거용 프록시를 통한 502 Bad Gateway는 게이트웨이가 상위 서버로부터 유효한 응답을 받지 못했다는 의미입니다. 원인, 프록시와 대상 구별법, 재시도 코드 안내.

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

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

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

**502 Bad Gateway**는 게이트웨이나 프록시가 체인 내 다음 서버로부터 잘못된 응답이나 응답 없음(무응답)을 받았음을 뜻합니다. CrawlRelay 주거용 프록시 사용 시 502는 보통 출구 연결 실패 또는 요청 중 대상 서버 장애입니다. 새 연결로 한 번 재시도하세요. 특정 사이트에서만 502가 계속 나오면 사이트 문제, 모든 사이트에서 발생하면 설정 문제입니다.

## 502 Bad Gateway 한눈에 보기

| 속성 | 값 |
| --- | --- |
| 오류 | 502 Bad Gateway |
| 유형 | HTTP 상태 코드 (5xx, 서버 오류) |
| 전송 주체 | 대상 앞의 프록시 게이트웨이 또는 리버스 프록시 |
| 정의 위치 | RFC 9110, section 15.6.3 |
| 다시 시도할까요? | 예, 새 연결 또는 세션 시 |
| 먼저 확인하세요 | 새 IP에서 한 번 재시도; 지속되면 프록시 없이 대상 테스트 |

## 502 Bad Gateway가 무엇을 의미하나요?

RFC 9110은 502를 게이트웨이가 뒤 서버 응답이 나쁨을 알리는 방식이라 정의합니다. 스크래핑 체인에는 적어도 두 개의 게이트웨이(프록시, 사이트 앞 CDN 또는 로드 밸런서)가 있으며, 어느 쪽에서나 502가 발생할 수 있고, 응답 본문에서 원인 게이트웨이를 알 수 있습니다.

주거용 네트워크는 출구 연결이 가정용이며 요청 도중 연결이 끊길 수 있어, 게이트웨이는 유효한 응답이 없을 수 있습니다.

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

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

- **Python requests:** `status_code == 502`, HTTPS 대상은 `ProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 502 Bad Gateway'))` 사용
- **curl:** `curl: (56) CONNECT tunnel failed, response 502`
- **브라우저:** HTTPS는 `net::ERR_TUNNEL_CONNECTION_FAILED`, HTTP는 일반 오류 페이지
- **Scrapy:** 502를 기본 재시도 대상(`RETRY_HTTP_CODES`)에 포함

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

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

- **출구가 요청 중간에 풀에서 이탈.** 주거용 네트워크 일반적 현상
- **대상이 연결을 닫거나, 다운되거나, 잘못된 응답 반환.
- **대상 CDN이 자체 오리진 서버에 연결 실패.
- **출구 쪽 DNS 오류, 예: 호스트명 오타.
- **대상 범위가 매우 좁아 출구가 제한적이며 반복 실패 발생.

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

1. 새 연결에서 요청 재시도. 사라지는 502는 연결 중단 때문.
2. 응답 본문과 헤더 확인: CDN 오류 페이지면 CDN, 간략 프록시 메시지면 게이트웨이 이름 있음.
3. 프록시 없이 본인 연결에서 대상 테스트.
4. 타깃 범위를 도시에서 국가 단위로 넓혀 실패율 비교.

*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 502를 어떻게 고치나요?

- **새 세션 ID로 재시도**하거나 세션 없이 요청함으로써 다른 출구 이용.
- **적절한 타임아웃 설정**으로 고장 난 출구를 빠르게 실패 처리.
- **호스트별 502 기록과 502 급증 호스트 일시 중단:** 사이트 다운 가능성 있음.

*Python: Retry-After, 지수 백오프 및 지터로 재시도하기*

```python
import random
import time

import requests

PROXY = "http://USERNAME:PASSWORD@gw.crawlrelay.com:7777"
PROXIES = {"http": PROXY, "https": PROXY}
RETRY_STATUSES = {429, 502, 503, 504}


def fetch(url, attempts=5, timeout=(10, 30)):
    for attempt in range(attempts):
        try:
            r = requests.get(url, proxies=PROXIES, timeout=timeout)
        except (requests.exceptions.ConnectionError, requests.exceptions.Timeout):
            r = None  # dropped exit, reset or timeout: a new connection gets a new exit
        if r is not None and r.status_code not in RETRY_STATUSES:
            return r
        retry_after = r.headers.get("Retry-After", "") if r is not None else ""
        if retry_after.isdigit():
            wait = int(retry_after)
        else:
            wait = min(60, 2 ** attempt) + random.uniform(0, 1)
        time.sleep(wait)
    raise RuntimeError("giving up on %s after %d attempts" % (url, attempts))
```

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

예, 502는 새 출구에서 제한하여 재시도하세요. 2~3회 정도 지수적 백오프로 충분합니다. 여러 출구에서도 502가 계속되면 대상 서버 문제로, 더 재시도 해도 효과 없습니다. 호스트별 실패율을 기록해 한 사이트가 재시도 큐를 채우지 않게 하세요.

## 502 Bad Gateway가 CrawlRelay에 어떻게 적용되나요?

CrawlRelay에서는 세션 ID를 버리거나 새로 생성해 보통 다른 주거용 IP 출구를 이용하도록 합니다. 스티키 세션은 한 출구에 묶으므로, 스티키 세션 내 502는 코드에서 세션 종료해야 합니다. 세션 회전 방법은 [세션 가이드](https://crawlrelay.com/ko/docs/sessions/)]에 상세히 설명되어 있습니다.

게이트웨이: `gw.crawlrelay.com`, 포트 7777 (CONNECT를 통한 HTTP, HTTPS) 및 포트 7778 (SOCKS5). 사용자 이름 형식: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. 관련: [504 Gateway Timeout](https://crawlrelay.com/ko/docs/errors/504-gateway-timeout/) · [Connection reset](https://crawlrelay.com/ko/docs/errors/connection-reset/) · [503 Service Unavailable](https://crawlrelay.com/ko/docs/errors/503-service-unavailable/).

## 502 Bad Gateway: 개발자들이 묻는 질문들

### 502 오류가 프록시 문제인가요, 아니면 웹사이트 문제인가요?

둘 다 가능합니다. 응답 본문을 확인하세요: CDN 오류 페이지에서 CDN 이름이 나오는데, 이는 웹사이트를 가리킵니다. 시도하는 모든 사이트에서 502 오류가 나타나면 프록시나 설정 문제이고, 특정 사이트에서만 502가 나타나면 그 사이트 문제입니다. 확실히 하려면 프록시 없이 같은 URL을 테스트해 보세요.

### 왜 502 오류가 주거용 프록시에서 더 자주 발생하나요?

주거용 출구는 실제 가정 연결입니다. 기기가 오프라인이 되거나 네트워크가 변경되거나 신호가 끊기면 요청 도중 502 오류나 연결 재설정이 발생합니다. 좋은 스크레이퍼는 이를 정상으로 보고 새로운 출구에서 재시도하며, 적절한 한도를 둡니다.

### 502 오류를 줄이기 위해 스티키 세션으로 전환해야 하나요?

아닙니다. 스티키 세션은 한 출구에 머무르므로 해당 출구가 실패하면 세션 내 모든 요청도 실패합니다. 독립적인 페이지에는 회전 연결을 사용하고, 다단계 플로우에만 스티키 세션을 사용하세요. 502 오류 발생 시 스티키 세션을 종료하고 새로 시작하세요.

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

- [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 없이 — 신분증, 셀카, 문서 없이 이용 가능. 암호화폐로 결제하세요.
