# 502 Bad Gateway qua proxy: ý nghĩa và cách sửa

> 502 Bad Gateway qua proxy residential là gateway không nhận được phản hồi đúng từ upstream. Nguyên nhân, cách phân biệt proxy và mục tiêu, mã thử lại.

- URL: https://crawlrelay.com/vi/docs/errors/502-bad-gateway/
- Cập nhật lần cuối: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

Mã trạng thái HTTP (5xx, lỗi máy chủ): thông báo chính xác trong từng công cụ, nguyên nhân có thể theo thứ tự, và cách sửa hiệu quả.

**Trả lời nhanh — 502 Bad Gateway nghĩa là gì với proxy?**

**502 Bad Gateway** nghĩa là gateway hoặc proxy nhận phản hồi không hợp lệ hoặc không có từ server kế tiếp. Qua proxy residential CrawlRelay, 502 thường do kết nối thoát hoặc mục tiêu lỗi giữa chừng. Thử lại một lần với kết nối mới. Nếu 502 vẫn xảy ra chỉ với một trang, trang đó có vấn đề; nếu tất cả trang đều bị, kiểm tra cấu hình của bạn.

## 502 Bad Gateway nhìn nhanh

| Thuộc tính | Giá trị |
| --- | --- |
| Lỗi | 502 Bad Gateway |
| Loại | Mã trạng thái HTTP (5xx, lỗi máy chủ) |
| Gửi bởi | Gateway proxy hoặc reverse proxy phía trước mục tiêu |
| Định nghĩa tại | RFC 9110, section 15.6.3 |
| Thử lại? | Có, khi kết nối hoặc phiên mới |
| Kiểm tra trước tiên | Thử lại một lần với IP mới; nếu còn, kiểm tra trang không dùng proxy |

## 502 Bad Gateway nghĩa là gì?

RFC 9110 mô tả 502 là cách gateway nói server phía sau phản hồi xấu. Trong chuỗi scraping có ít nhất hai gateway: proxy và thường là CDN hoặc cân bằng tải trước website. Cái nào cũng có thể gây 502, và nội dung phản hồi thường cho biết gateway nào.

Mạng residential thêm một mắt xích nữa. Kết nối thoát là kết nối hộ gia đình thật, thiết bị có thể rời mạng trong lúc yêu cầu. Khi đó gateway không có dữ liệu hợp lệ gửi lại.

## a 502 trông như thế nào trong Python, curl, Node.js và trình duyệt?

Cùng một lỗi nhưng hiển thị khác nhau trên mỗi công cụ. Đây là các thông báo bạn nên tìm trong nhật ký của mình:

- **Python requests:** `status_code == 502`, hoặc `ProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 502 Bad Gateway'))` với trang HTTPS
- **curl:** `curl: (56) CONNECT tunnel failed, response 502`
- **Trình duyệt:** `net::ERR_TUNNEL_CONNECTION_FAILED` với HTTPS, hoặc trang lỗi đơn giản với HTTP
- **Scrapy:** thử lại tự động vì 502 có trong `RETRY_HTTP_CODES`

## Nguyên nhân gây ra a 502 là gì?

Khả năng đầu tiên là:

- **Kết nối thoát ra khỏi nhóm** trong lúc yêu cầu, việc bình thường với mạng residential.
- **Mục tiêu đóng kết nối**, treo hoặc trả dữ liệu sai.
- **CDN của mục tiêu lỗi** không đến được server gốc.
- **Lỗi DNS ở phía thoát**, ví dụ lỗi tên miền.
- **Định vị rất hẹp** khiến ít kết nối thoát, do đó lỗi lặp lại trên cùng một nhóm nhỏ.

## Làm sao để chẩn đoán a 502 từng bước?

1. Thử lại yêu cầu với kết nối mới. Một 502 biến mất sau đó là thoát bị ngắt.
2. Đọc nội dung và header trả về: trang lỗi CDN thường ghi tên CDN; thông báo proxy ngắn ghi gateway.
3. Thử mục tiêu từ kết nối của bạn không qua proxy.
4. Mở rộng định vị từ thành phố lên quốc gia để so sánh tỉ lệ lỗi.

*Kiểm tra URL bị lỗi với curl (cổng HTTP, chi tiết)*

```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
```

## Làm sao để sửa a 502?

- **Thử lại với session mới hoặc không có session**, để yêu cầu thoát qua IP khác.
- **Thiết lập timeout hợp lý** để kết nối chết phát hiện nhanh không treo.
- **Ghi lại số 502 mỗi host** và tạm dừng host nếu lỗi tăng cao.

*Python: thử lại với Retry-After, độ trễ lũy thừa và jitter*

```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))
```

## Có nên thử lại sau a 502 không?

Có, thử lại 502 nhưng qua kết nối thoát mới và giới hạn số lần. Hai ba lần với chờ ngắn là đủ. 502 kéo dài qua nhiều kết nối thoát trỏ lỗi do trang, thử nhiều không giúp. Theo dõi tỉ lệ lỗi mỗi host để tránh một trang hỏng làm đầy hàng đợi.

## 502 Bad Gateway áp dụng thế nào với CrawlRelay?

Với CrawlRelay, bỏ session ID hoặc tạo ID mới để thoát qua IP residential khác. Phiên sticky ràng buộc với một thoát, do đó 502 trong phiên sticky nên kết thúc phiên trong mã của bạn. [Hướng dẫn phiên](https://crawlrelay.com/vi/docs/sessions/) giải thích cách quay phiên sạch sẽ.

Gateway: `gw.crawlrelay.com`, cổng 7777 (HTTP, HTTPS qua CONNECT) và cổng 7778 (SOCKS5). Định dạng tên người dùng: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. Tham khảo liên quan: [504 Gateway Timeout](https://crawlrelay.com/vi/docs/errors/504-gateway-timeout/) · [Connection reset](https://crawlrelay.com/vi/docs/errors/connection-reset/) · [503 Service Unavailable](https://crawlrelay.com/vi/docs/errors/503-service-unavailable/).

## 502 Bad Gateway: các câu hỏi thường gặp của lập trình viên

### Lỗi 502 lỗi do proxy hay do website?

Có thể là một trong hai. Hãy đọc phần nội dung phản hồi: trang lỗi CDN nêu tên CDN, cho thấy lỗi từ website. Nếu bạn gặp lỗi 502 trên mọi trang web thì lỗi do proxy hoặc cấu hình của bạn, còn lỗi 502 chỉ trên một trang thì do trang đó. Hãy thử cùng URL mà không qua proxy để chắc chắn.

### Tại sao lỗi 502 lại phổ biến hơn với proxy residential?

Các kết nối residential là các kết nối thật từ nhà, thiết bị có thể mất kết nối, đổi mạng hoặc mất tín hiệu. Một yêu cầu đang thực hiện khi đó xảy ra sẽ trả về lỗi 502 hoặc reset kết nối. Một scraper tốt sẽ coi đó là chuyện bình thường và thử lại qua một exit mới, với giới hạn nhỏ về số lần thử.

### Có nên chuyển sang phiên làm việc cố định để giảm lỗi 502 không?

Không. Phiên làm việc cố định giữ bạn trên một exit, nên nếu exit đó gặp lỗi thì mọi yêu cầu trong phiên cũng thất bại theo. Hãy dùng kết nối xoay vòng cho các trang độc lập và chỉ dùng phiên cố định cho các quy trình nhiều bước. Kết thúc phiên cố định sau lỗi 502 và bắt đầu phiên mới.

## Các lỗi proxy khác trong tài liệu tham khảo này

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

**Proxy dân cư với tài liệu bao gồm các trường hợp lỗi** CrawlRelay proxy dân cư từ 0,50 US$/GB, lưu lượng không bao giờ hết hạn. [Xem giá](https://crawlrelay.com/vi/pricing/) · [Bắt đầu nhanh](https://crawlrelay.com/vi/docs/)

---

CrawlRelay: CrawlRelay là dịch vụ proxy dân cư xoay vòng và proxy di động 4G/5G dành cho nhà phát triển, hỗ trợ scrapers và pipeline dữ liệu AI: traffic trả tiền theo nhu cầu không hết hạn từ 0,50 US$/GB, thanh toán bằng crypto, không cần tải lên ID. Không cần KYC — không cần ID, không chụp selfie, không giấy tờ.
