Hello! On Wed, Aug 09, 2017 at 08:46:41PM +0530, Sharan J wrote:
> Hello, > > I am using Nginx as a reverse proxy and have enabled HTTP/2. For a > particular request, my back-end server sends a custom 4 digit status code > (say 9999). > > When connecting via HTTP/1.1, the exact status code is returned to the > client but, when connection via HTTP/2, the response headers along with the > status(9999) sent by my back-end server is sent in the body and the header > has the status code 000. > > The same works fine if the custom status code is 3-digit (say 999). I know > the standard is to use 3 digit status code but, why does Nginx sends the > back-end server's response headers in the body? Please help me understand > what exactly is happening. When you return a 4-digit status code from your backend, nginx will fail to parse the HTTP response of the backend, and will assume that backend is using HTTP/0.9. Something like this will be logged to the error log: ... [error] ... upstream sent no valid HTTP/1.0 header while reading response header from upstream ... Since there are no headers in HTTP/0.9, everything returned by the backend will be considered to be a response body. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx
