Nginx returning 414 even when large_client_header_buffers is set

Maxim Dounin mdounin at mdounin.ru
Wed Apr 11 07:20:23 UTC 2012


Hello!

On Tue, Apr 10, 2012 at 07:45:21PM -0400, spacerobot wrote:

> Hello,
> 
> spacerobot Wrote:
> -------------------------------------------------------
> > > Most likely you are trying to configure 
> > >
> > client_header_buffer_size/large_client_header_buff
> > 
> > > ers in a pure 
> > > virtual server{}.  This won't work as request
> > > headers parsing 
> > > happens before Host header is known (and
> > virtual
> > > server is 
> > > selected), hence parseing happens in a context
> > of
> > > the default 
> > > server for a listen socket.
> > > 
> > > You have to configure
> > >
> > client_header_buffer_size/large_client_header_buff
> > 
> > > ers 
> > > in a default server (or at http level).
> > > 
> > 
> > I tried to set it in the http context of the main
> > /etc/nginx/nginx.conf file:
> > 
> > http {
> >   large_client_header_buffers  8  512k;
> > 
> >   ...
> >   include /etc/nginx/sites-enabled/*;
> > }
> > 
> > And my server contexts are defined in a conf file
> > in sites-enabled. But large_client_header_buffers
> > still appears to be ignored.
> 
> I further tried the following things, which didn't help either:
> - took out most of the configs in my nginx.conf and now I have the
> simplest configuration possible, as below.
> - upgraded to 1.0.14 stable from 1.0.12 development.
> 
> My new simplified nginx.conf:
> 
> worker_processes  2;
> daemon off;
> 
> error_log  /var/log/nginx/error.log;
> 
> events {
>   worker_connections  2048;
> }
> 
> http {
>   client_header_buffer_size 256k;
>   large_client_header_buffers 8 1024k;
> 
>   upstream foo.com {
>     server 10.0.0.99:16234;
>     server 10.0.0.20:16234;
>   }
> 
>   server {
>     listen   443;
> 
>     ssl on;
>     ssl_certificate /etc/foo.com.crt;
>     ssl_certificate_key /etc//foo.com.key;
> 
>     server_name  foo;
> 
>     access_log  /var/log/nginx/access.log main;
> 
>     set $foo "foo.com";
> 
>     location / {
>       proxy_set_header x-foo-rid $request_id;
>       proxy_redirect http://$foo /;
>       proxy_pass http://$foo;
>     }
>   }
> }

Are you sure the error is returned by this nginx instance, not by 
your http backends?

Maxim Dounin



More information about the nginx mailing list