nginx
protocol_error
ai_generated
true
上游服务器发送了无效的 Host 头部
upstream sent invalid host header while connecting to upstream
ID: nginx/invalid-host-header-upstream
85%修复率
82%置信度
1证据数
2024-03-10首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| nginx 1.24.0 | active | — | — | — |
| nginx 1.22.1 | active | — | — | — |
| nginx 1.20.2 | active | — | — | — |
根因分析
上游服务器返回了无效或格式错误的 Host 头部(例如空值、非 ASCII 字符或过长),导致 nginx 在处理响应时拒绝。
English
The upstream server responded with an invalid or malformed Host header (e.g., empty, non-ASCII, or too long), causing nginx to reject it during response processing.
官方文档
https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header解决方案
-
Fix the upstream application to return a valid Host header (e.g., ensure it's a non-empty ASCII string). For example, in a Node.js app: `res.setHeader('Host', req.headers.host || 'example.com');` -
Use proxy_pass with a specific IP and set the Host header manually in nginx: `proxy_set_header Host $proxy_host;`
-
Inspect upstream logs to see the exact Host header being sent and sanitize it in the upstream application code.
无效尝试
常见但无效的做法:
-
80% 失败
This controls the request header sent to upstream, not the response header from upstream.
-
60% 失败
The issue is often in the upstream application logic that generates the response header.
-
90% 失败
proxy_ignore_headers does not apply to the Host header; it applies to other headers like Cache-Control.