# 通过代理时的504网关超时：原因与解决办法

> 504网关超时意味着网关等待后端服务器响应超时。住宅代理的成因、超时配置和重试建议。

- URL: https://crawlrelay.com/zh/docs/errors/504-gateway-timeout/
- 最后更新: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

HTTP 状态码（5xx，服务器错误）：每个工具中的精确错误信息、可能原因排序及有效解决方案。

**快速回答 — 代理中的504 Gateway Timeout是什么意思？**

**504网关超时** 表示网关（代理或网站CDN）等待后端服务器响应超时放弃。通过CrawlRelay住宅代理，慢链路通常是目标或出口家用连接。新出口重试一次，保持请求轻量，自行设定客户端超时，让慢请求按你控制时限失败。

## 504 Gateway Timeout一览

| 属性 | 值 |
| --- | --- |
| 错误 | 504 Gateway Timeout |
| 类型 | HTTP 状态码（5xx，服务器错误） |
| 发送方 | 代理网关或目标前方的CDN |
| 定义于 | RFC 9110, section 15.6.5 |
| 要重试吗？ | 是，新出口尝试一两次 |
| 先检查 | 无代理时测同一请求响应时间 |

## 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托管站点:** CDN发出的504错误页

## 导致a 504的原因是什么？

最可能的首要原因：

- **目标响应慢**，比如需要几秒构建的搜索页。
- **出口慢**，如弱家宽或拥堵移动网络。
- **响应内容大**，超过网关等待极限。
- **站点源服务器超时**，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秒适合普通页面。
- **新出口重试**一两次。
- **减少请求量**：只需HTML或JSON时跳过图片和媒体。
- **安排重页面在目标国非高峰时间访问。**

*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/zh/docs/errors/502-bad-gateway/) · [Read timed out](https://crawlrelay.com/zh/docs/errors/read-timeout/) · [503 Service Unavailable](https://crawlrelay.com/zh/docs/errors/503-service-unavailable/)。

## 504 Gateway Timeout：开发者常问的问题

### 502和504有什么区别？

两者都是来自同一个网关。502表示后端服务器返回了无效响应或断开了连接。504表示没有及时返回响应。对住宅代理来说，502通常指出口断开，504则表示目标响应慢或家庭连接慢。

### 我能提高代理的超时时间吗？

您控制客户端的超时设置，而非网关的内部超时。请明确设置连接及读取超时时间，使慢请求能按预期失败并重试新出口，同时保持页面轻量。如果目标需要很长时间响应，请改请求其API或更轻量页面。

### 移动代理比住宅代理慢吗？

移动代理可能较慢，因为其出口与其他用户共用移动信号，其速度随信号强度和负载波动。针对需要的目标使用移动IP，其它场景用住宅IP批量抓取。使用前测量每种出口的响应时间。

## 本参考中的其他代理错误

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

**带有涵盖失败案例文档的住宅代理** 来自US$0.50/GB的CrawlRelay住宅代理，流量永不过期。 [查看价格](https://crawlrelay.com/zh/pricing/) · [快速开始](https://crawlrelay.com/zh/docs/)

---

CrawlRelay: CrawlRelay 是为开发者设计的住宅代理和 4G/5G 移动代理轮换服务，适用于爬虫和 AI 数据管道：按需付费且流量永不过期，最低流量从 US$0.50/GB 起，支持加密货币支付，无需上传身份证明。无需 KYC —— 无需身份证、自拍和任何证件。支持加密货币支付。
