proxy_connect_timeout必须与proxy_pass同作用域配置,仅对http反向代理生效,控制tcp握手超时,单位仅支持s/ms,不处理dns解析或健康检查。

proxy_connect_timeout 必须写在启用 proxy_pass 的上下文中,不能孤立存在。它只对 HTTP 反向代理生效,且仅控制 TCP 三次握手阶段的连接建立耗时。
配置位置必须匹配 proxy_pass 生效范围
该指令只能出现在 location、server 或 http 块中,且必须与 proxy_pass 处于同一作用域:
- 写在
location /api/ { ... proxy_pass http://backend; proxy_connect_timeout 5s; }中 → 仅对该路径生效 - 写在
server { ... proxy_pass http://backend; proxy_connect_timeout 3s; }中 → 覆盖该 server 下所有 proxy_pass - 写在
http { proxy_connect_timeout 5s; }中 → 作为全局默认值,但会被更具体的 location/server 块覆盖 - 若使用
fastcgi_pass或uwsgi_pass,此参数无效,需改用fastcgi_connect_timeout等对应指令
单位写法要规范,支持秒和毫秒
值可带单位,不写单位默认为秒;推荐显式标注单位,避免歧义:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
-
proxy_connect_timeout 3s;→ 3 秒(内网常用) -
proxy_connect_timeout 800ms;→ 800 毫秒(低延迟场景可选) -
proxy_connect_timeout 12;→ 等价于 12 秒,但建议写成12s - 不支持
m(分钟)、h(小时)等单位,仅限s和ms
不能替代 DNS 或健康检查逻辑
这个参数不处理域名解析和节点状态感知:
- 后端地址是域名(如
http://app.example.com)时,DNS 解析由resolver和resolver_timeout控制,与此无关 - 它不判断后端是否“健康”,只管“连得上连不上”。要自动剔除故障节点,必须配合
upstream块中的主动健康检查或proxy_next_upstream error timeout - 若频繁触发超时,优先排查网络连通性、防火墙策略、后端是否监听端口,而不是盲目调大数值
典型配置示例(直接可用)
以下是一个生产环境常见写法,放在 location 块内:
location /service/ {
proxy_pass http://my_upstream;
proxy_connect_timeout 5s;
proxy_read_timeout 30s;
proxy_send_timeout 30s;
proxy_next_upstream error timeout;
proxy_next_upstream_tries 2;
}
注意:不要把 proxy_connect_timeout 错误地写在 upstream 块里——它不在此处生效;也不要在 stream 模块(TCP/UDP 代理)中使用它,那里应使用 proxy_timeout。










