HTTP status codes missing description in header for proxy_pass

kgoess nginx-forum at
Mon Jun 3 23:07:50 UTC 2013

We're using nginx as a middle layer in front of our application server
(mod_perl).  When mod_perl returns an error page, the HTTP status line is
missing the "reason phrase" after the status code, like "Not Found", e.g.

HTTP/1.1 404
Server: nginx/1.2.1

should be

HTTP/1.1 404 Not Found

AFAICT, the HTTP spec requires at least a space after the status code:

  The first line of a Full-Response message is the Status-Line,
   consisting of the protocol version followed by a numeric status code
   and its associated textual phrase, with each element separated by SP
   characters. No CR or LF is allowed except in the final CRLF sequence.

       Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

   Since a status line always begins with the protocol version and
   status code

       "HTTP/" 1*DIGIT "." 1*DIGIT SP 3DIGIT SP

   (e.g., "HTTP/1.0 200 "),

       Reason-Phrase  = *<TEXT, excluding CR, LF>


The reason we noticed is that putting Perlbal in front of nginx got the
status rejected, since Perlbal is written to strictly follow the spec:

return fail("Bogus response line") unless
            $self->{responseLine} =~

Is this a bug in nginx, or a configuration issue that we can fix? The patch
to Perlbal is simple enough, is it worth looking for a patch to nginx? Or
did we miss something else entirely?

Posted at Nginx Forum:,239811,239811#msg-239811

More information about the nginx mailing list