proxy_connect_timeout 是 Nginx 反向代理中控制与后端建立 TCP 连接超时的指令,单位秒,仅作用于三次握手阶段,默认 60s,建议高并发时设为 3s~5s,对 SSL 握手、响应延迟等无效。

proxy_connect_timeout 是 Nginx 作为 HTTP 代理时,用于控制与后端服务器建立 TCP 连接的超时时间,单位为秒(可带毫秒小数,如 0.5)。它仅影响“三次握手完成”的阶段,不涉及 SSL 握手或请求发送。若在此时间内无法完成连接,Nginx 就会返回 502 Bad Gateway 或触发重试(取决于配置)。
作用范围和生效条件
该指令仅在 location 块或 server 块中启用 proxy_pass 时生效,常见于反向代理场景。它对 FastCGI、uWSGI、gRPC 等其他代理协议无效——那些有各自对应的超时指令(如 fastcgi_connect_timeout)。
- 默认值为
60s,但高并发或网络不稳时建议调低(如3s~5s) - 值设为
0表示禁用超时(不推荐,易导致连接堆积) - 若后端是本地服务(如
127.0.0.1:8000),通常设为1s已足够
典型配置示例
以下是一个简洁实用的代理配置片段:
location /api/ {
proxy_pass http://backend_servers;
proxy_connect_timeout 3s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
}
注意:proxy_connect_timeout 应明显小于 proxy_send_timeout 和 proxy_read_timeout,避免连接卡住却迟迟不失败。
调试与验证方法
可通过日志和工具确认是否生效:
- 开启
error_log的info或debug级别,查找类似connect() failed (110: Connection timed out)的记录 - 用
tcpdump或ss -tuln观察 Nginx 主进程是否在超时后主动关闭 SYN 尝试 - 模拟后端不可达(如防火墙拦截端口),观察客户端收到 502 的延迟是否接近设定值
常见误区提醒
很多人误以为它能控制“后端响应慢”或“SSL 握手慢”,其实不能:
- SSL/TLS 握手耗时受
proxy_ssl_verify、证书链长度等影响,proxy_connect_timeout不覆盖这部分 - 如果后端已接受连接但迟迟不发响应,那是
proxy_read_timeout起作用 - 上游 DNS 解析超时由
resolver_timeout控制,与该指令无关

















