Missing slash and error 400 / bad Request

Igor Sysoev is at rambler-co.ru
Tue Nov 3 19:25:38 MSK 2009


On Tue, Nov 03, 2009 at 08:17:04AM -0800, cheinsow wrote:

> 
> Thanks for your reply. I'm perfectly aware that this client do not respect
> RFS's, but unfortunately I cannot modify it.
> I just wanted to know if they were some "configuration tricks" to make nginx
> accept this http request. 

No, nginx requires "/" in URI start.

> The client application is very specific, and of course it's not common
> enough to require nginx to be modified to handle it's requests.
> 
> 
> 
> Maxim Dounin wrote:
> > 
> > Hello!
> > 
> > On Tue, Nov 03, 2009 at 05:07:01AM -0800, cheinsow wrote:
> > 
> >> 
> >> I never tried with Apche, but it works with lightTPD. I got some other
> >> issues
> >> with lightTPD (essentially high CPU usage), that's why I'm trying to
> >> replace
> >> it with Nginx.
> > 
> > Actually, it doesn't matter how apache or lighty handle this.  
> > There are two basic points should be considered here:
> > 
> > 1. What RFC 2616 says.
> > 
> > 2. What real life says (i.e. if there are any clients using it).
> > 
> > RFC 2616 looks very clear here:
> > 
> > Request-Line   = Method SP Request-URI SP HTTP-Version CRLF
> > Request-URI    = "*" | absoluteURI | abs_path | authority
> > 
> > it adopts "absoluteURI", "abs_path" and "authority" definitions 
> > from RFC 2396:
> > 
> > absoluteURI   = scheme ":" ( hier_part | opaque_part )
> > abs_path      = "/"  path_segments
> > 
> > Obviously "index.html" isn't an absoluteURI (must contain ":"), and 
> > isn't an abs_path (must start with "/").
> > 
> > So "GET index.html HTTP/1.1" is only valid assuming "index.html" 
> > is authority.  On the other hand, RFC 2616 says in "5.1.2 
> > Request-URI":
> > 
> > % The authority form is only used by the CONNECT method (section 
> > % 9.9).
> > 
> > That is, "GET index.html HTTP/1.1" is invalid per RFC 2616.  It's 
> > not HTTP.  And nginx rightfully returns 400 here.
> > 
> > So we here back to question (2).  What client produced request in 
> > question?  Is it common enough to add compatibility shims and 
> > accept non-http requests from it?
> > 
> > Maxim Dounin
> > 
> > 
> >> 
> >> 
> >> 
> >> Igor Sysoev wrote:
> >> > 
> >> > On Tue, Nov 03, 2009 at 02:51:38AM -0800, cheinsow wrote:
> >> > 
> >> >> i'm trying to use Nginx as a reverse proxy, and i get some troubles
> >> due
> >> >> to a
> >> >> missing "/" in the HTTP header sant by a client application.
> >> >> The HTTP/GET header is "GET index.html HTTP/1.1" and it seems that it
> >> >> should
> >> >> be "GET /index.html HTTP/1.1". This causes an error 400 (nginx logs
> >> >> confirms
> >> >> this).
> >> >> 
> >> >> knowing that the client application cannot be modified, is their a way
> >> to
> >> >> configure Nginx so that it accepts this request ?
> >> > 
> >> > Do the client work with other web servers ?
> >> > Apache should return 400 error on such request too.
> >> > 
> >> > 
> >> > -- 
> >> > Igor Sysoev
> >> > http://sysoev.ru/en/
> >> > 
> >> > 
> >> > 
> >> 
> >> -- 
> >> View this message in context:
> >> http://n2.nabble.com/Missing-slash-and-error-400-bad-Request-tp3937707p3938334.html
> >> Sent from the nginx mailing list archive at Nabble.com.
> >> 
> > 
> > 
> > 
> 
> -- 
> View this message in context: http://n2.nabble.com/Missing-slash-and-error-400-bad-Request-tp3937707p3939466.html
> Sent from the nginx mailing list archive at Nabble.com.

-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list