# upstream sent invalid Connection header while reading response header from upstream

- **ID:** `nginx/upstream-sent-invalid-connection-header`
- **Domain:** nginx
- **Category:** protocol_error
- **Verification:** ai_generated
- **Fix Rate:** 90%

## Root Cause

Upstream server returns a malformed or non-compliant 'Connection' header (e.g., multiple values, invalid token) that nginx rejects.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| nginx 1.24.0 | active | — | — |
| nginx 1.25.3 | active | — | — |
| nginx 1.26.0 | active | — | — |

## Workarounds

1. **Use proxy_ignore_headers to ignore the Connection header from upstream:
  location / {
      proxy_pass http://upstream;
      proxy_ignore_headers Connection;
  }** (90% success)
   ```
   Use proxy_ignore_headers to ignore the Connection header from upstream:
  location / {
      proxy_pass http://upstream;
      proxy_ignore_headers Connection;
  }
   ```
2. **Fix the upstream application to emit a valid Connection header (e.g., 'close' or 'keep-alive' only, no duplicates). For example, in a Node.js app:
  res.setHeader('Connection', 'keep-alive');
  // Remove any duplicate or malformed Connection headers** (95% success)
   ```
   Fix the upstream application to emit a valid Connection header (e.g., 'close' or 'keep-alive' only, no duplicates). For example, in a Node.js app:
  res.setHeader('Connection', 'keep-alive');
  // Remove any duplicate or malformed Connection headers
   ```

## Dead Ends

- **Add proxy_set_header Connection '';** — This only affects request headers sent to upstream, not response headers from upstream. (80% fail)
- **Clear nginx cache** — Caching does not cause or fix header validation issues. (100% fail)
- **Upgrade nginx to latest version** — The issue is usually in the upstream application, not nginx itself. (60% fail)
