HTTP status codes missing description in header for proxy_pass
kgoess
nginx-forum at nginx.us
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
...etc
should be
HTTP/1.1 404 Not Found
...etc...
AFAICT, the HTTP spec requires at least a space after the status code:
---------------------------------------------
http://www.w3.org/Protocols/rfc1945/rfc1945
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} =~
m!^HTTP\/(\d+)\.(\d+)\s+(\d+)(?:\s+(.*))$!;
------------------------------------------------
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: http://forum.nginx.org/read.php?2,239811,239811#msg-239811
More information about the nginx
mailing list