# upstream sent HTTP/2.0 response while reading response header from upstream, client: 10.0.0.5

- **ID:** `nginx/upstream-sent-http-version-not-supported`
- **Domain:** nginx
- **Category:** protocol_error
- **Verification:** ai_generated
- **Fix Rate:** 75%

## Root Cause

Upstream server sent an HTTP/2.0 response to nginx that did not negotiate HTTP/2 via ALPN, causing protocol mismatch and connection failure.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| nginx 1.20.0 | active | — | — |
| nginx 1.22.1 | active | — | — |
| nginx 1.25.0 | active | — | — |

## Workarounds

1. **Configure upstream to use HTTP/1.1 instead of HTTP/2. For example, in Apache: disable HTTP/2 module; in Node.js: set HTTP/1.1 explicitly.** (85% success)
   ```
   Configure upstream to use HTTP/1.1 instead of HTTP/2. For example, in Apache: disable HTTP/2 module; in Node.js: set HTTP/1.1 explicitly.
   ```
2. **If upstream must use HTTP/2, place a reverse proxy like HAProxy or Caddy between nginx and the upstream that can downgrade HTTP/2 to HTTP/1.1.** (60% success)
   ```
   If upstream must use HTTP/2, place a reverse proxy like HAProxy or Caddy between nginx and the upstream that can downgrade HTTP/2 to HTTP/1.1.
   ```
3. **Ensure upstream server correctly negotiates HTTP/2 via TLS ALPN (e.g., for nginx as upstream, use 'listen 443 ssl http2;').** (70% success)
   ```
   Ensure upstream server correctly negotiates HTTP/2 via TLS ALPN (e.g., for nginx as upstream, use 'listen 443 ssl http2;').
   ```

## Dead Ends

- **** — Nginx proxy module does not support HTTP/2 as upstream protocol; setting it will cause configuration error. (90% fail)
- **** — As of nginx 1.25.x, HTTP/2 upstream is not supported in the proxy module; this is a limitation of nginx itself. (95% fail)
- **** — The error will recur on every request; retries do not fix the protocol mismatch. (80% fail)
