# 上游发送了无效的状态行，从上游读取响应头时，客户端：10.0.0.1，服务器：example.com

- **ID:** `nginx/upstream-sent-invalid-status-line-empty`
- **领域:** nginx
- **类别:** protocol_error
- **验证级别:** ai_generated
- **修复率:** 76%

## 根因

上游服务器发送了格式错误的 HTTP 状态行（例如，空行或缺少 HTTP 版本），导致 nginx 无法解析响应。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| nginx 1.18.0 | active | — | — |
| nginx 1.20.1 | active | — | — |
| nginx 1.22.0 | active | — | — |
| nginx 1.24.0 | active | — | — |

## 解决方案

1. ```
   Fix the upstream application to return a valid HTTP status line. For example, in a Python WSGI app, ensure the application returns a proper start line:
def application(environ, start_response):
    status = '200 OK'
    headers = [('Content-Type', 'text/plain')]
    start_response(status, headers)
    return [b'Hello World']
Check for missing or empty status strings in custom servers.
   ```
2. ```
   Use nginx's proxy_pass with a rewrite to a different upstream that sanitizes responses, or place a reverse proxy like Varnish in front of the misbehaving upstream to normalize responses.
   ```

## 无效尝试

- **Set proxy_http_version 1.1;** — The error is about a malformed status line, not the HTTP version. Changing proxy version does not fix upstream's invalid output. (90% 失败率)
- **Increase proxy_read_timeout** — Timeout does not affect the format of the response; the upstream is responding, but with invalid data. (95% 失败率)
- **Add proxy_buffering off;** — Buffering affects how nginx reads the response body, not the status line parsing in the header. (92% 失败率)
