421 是什么
421 Misdirected Request 表示请求被送到了一台无法为它提供服务的服务器(RFC 9110 §15.5.20)。最典型的是 HTTP/2 连接合并:客户端把两个域名的请求复用到同一条 TLS 连接上,而这条连接对应的证书与后端只对一个域名有效,于是另一个域名的请求被判为投递错误。
基本信息
| 名称 | 421 Misdirected Request |
|---|---|
| 类别 | 4xx |
| 规范 | RFC 9110 §15.5.20 |
| 典型场景 | HTTP/2、HTTP/3 连接合并与 SNI 或证书不匹配 |
| 其他成因 | 虚拟主机缺 server_name、网关丢弃 SNI |
| 推荐处理 | 客户端换一条连接重试即可 |
典型使用场景
- 偶发 421:多为连接合并噪音,客户端自动换连接重试即可
- 持续 421:检查证书 SAN 是否覆盖所有被合并的域名
- 反向代理与网关:确认 HTTP/2 与 SNI 选择上游的逻辑
- 多域名同 IP 部署:排查请求是否落到了错误的后端
- 日志分析:区分「客户端噪音」与「配置错误导致的稳定失败」
- 灰度验证:开启连接合并前做多域名回归测试
定位与复现
定位与复现
# 单域名独立请求正常、复用连接时报 421 → 指向连接合并或证书覆盖问题
curl -sv --http2 https://b.example.net/ 2>&1 | grep -E '< HTTP'
# 检查证书覆盖的域名列表(SAN)
openssl s_client -connect b.example.net:443 -servername b.example.net </dev/null 2>/dev/null | openssl x509 -noout -text | grep -A1 'Subject Alternative Name'常见成因与处理
| 成因 | 现象 | 处理 |
|---|---|---|
| 证书 SAN 未覆盖被合并域名 | 复用连接时偶发 421 | 补齐证书域名或关闭连接合并 |
| SNI 与后端不匹配 | 固定域名请求必现 | 修正网关路由与 SNI 传递 |
| 虚拟主机缺 server_name | 请求被默认站点接走 | 补齐虚拟主机配置 |
| 客户端轮询到不同后端 | 不同请求结果不一致 | 统一各后端配置 |
421 属于可以安全重试的响应:客户端换一条连接重发即可,业务侧通常不需要提示用户。
网关若对 HTTP/2 连接做了复用却没有正确校验 Host 与 SNI,也会返回 421 作为自我保护。
HTTP/1.1 不会进行连接合并,因此「只在开启 HTTP/2 后出现」是判断这类问题的重要线索。