nginx protocol_error ai_generated true

upstream sent invalid header while reading response header from upstream

ID: nginx/upstream-sent-invalid-header

Also available as: JSON · Markdown · 中文
78%Fix Rate
85%Confidence
1Evidence
2023-03-15First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
nginx 1.18.0 active
nginx 1.20.2 active
nginx 1.24.0 active

Root Cause

Upstream server returned a malformed or invalid HTTP header that nginx cannot parse, often due to a backend application crash or misconfiguration.

generic

中文

上游服务器返回了格式错误或无效的HTTP头部,nginx无法解析,通常由后端应用崩溃或配置错误引起。

Official Documentation

https://nginx.org/en/docs/http/ngx_http_proxy_module.html

Workarounds

  1. 85% success Check upstream application logs for errors (e.g., PHP-FPM logs, uWSGI logs). Fix the application code that sends malformed headers.
    Check upstream application logs for errors (e.g., PHP-FPM logs, uWSGI logs). Fix the application code that sends malformed headers.
  2. 30% success Add a custom error page or proxy_intercept_errors on; for example: server { proxy_intercept_errors on; error_page 502 /502.html; } This hides the error from clients but does not fix the root cause.
    Add a custom error page or proxy_intercept_errors on; for example:
    server {
        proxy_intercept_errors on;
        error_page 502 /502.html;
    }
    This hides the error from clients but does not fix the root cause.
  3. 50% success Configure nginx to ignore invalid headers by setting 'proxy_ignore_headers X-Accel-Redirect;' if the invalid header is non-critical, but prefer fixing upstream.
    Configure nginx to ignore invalid headers by setting 'proxy_ignore_headers X-Accel-Redirect;' if the invalid header is non-critical, but prefer fixing upstream.

中文步骤

  1. Check upstream application logs for errors (e.g., PHP-FPM logs, uWSGI logs). Fix the application code that sends malformed headers.
  2. Add a custom error page or proxy_intercept_errors on; for example:
    server {
        proxy_intercept_errors on;
        error_page 502 /502.html;
    }
    This hides the error from clients but does not fix the root cause.
  3. Configure nginx to ignore invalid headers by setting 'proxy_ignore_headers X-Accel-Redirect;' if the invalid header is non-critical, but prefer fixing upstream.

Dead Ends

Common approaches that don't work:

  1. 65% fail

    The error is not about buffer size but about header validity; increasing buffers masks the issue but backend still sends invalid data.

  2. 80% fail

    Restarting nginx does not fix the upstream application that generates invalid headers.

  3. 70% fail

    Disabling buffering may change behavior but does not correct invalid headers from upstream.