Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: причина 'upstream sent too big header '?
On Thu, Jan 27, 2011 at 11:47:32AM +0300, Alex L. Demidov wrote:
> У моего клиента работает nginx 0.8.53 под debian, php через fastcgi
>
> location ~ \.php$ {
> ssi on;
> include fastcgi_params;
> fastcgi_pass 127.0.0.1:9000;
> fastcgi_index index.php;
> fastcgi_param SCRIPT_FILENAME /var/www/axis$fastcgi_script_name;
> }
>
> В процессе тестирования проявилась следующая проблема:
>
> 2011/01/26 10:39:29 [error] 12938#0: *116 upstream sent too big header while
> reading response header from upstream, client: xxx.xxx.xxx.xxx, server:
> www.example.com, request: "POST /prestashop/modules/hsbc/validation.php
> HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.example.com",
> referrer: "http://www.example.com/prestashop/modules/hsbc/validation.php"
>
> Я порекомендовал клиенту добавить в секцию http { ... }
> 'fastcgi_buffers 8 16k;' и увеличивать первое число пока проблема не
> уйдет. Клиент докрутил до '128 16k', но проблема не решилась.
>
> Заодно клиент прислал мне ссылку на утверждение г. Hongi Lai (автора
> Phusion Passenger) что данная проблема не решается увеличением
> буферов, цитирую: 'It's got nothing to do with buffer sizes. Nginx
> simply refuses to accept response headers that are larger than a
> certain limit for security reasons.'
>
> http://groups.google.com/group/phusion-passenger/browse_thread/thread/5e6d0684793bc62d/b38b5374d957f3ef
>
> Я поразглядывал вызов process_header в src/http/ngx_http_upstream.c
> и его окрестности и этих 'certain limit for security reasons' (кроме
> обычного переполнения буферов) которые приводят к сообщению
> 'upstream sent too big header' так и не увидел. Но смотрел я всего
> полчаса и хотелось бы услышать чье-то более информированное мнение.
>
> Пока я посоветовал клиенту продолжить крутить буфера, но на этот раз
> менять второе число (16k) плюс одновременно добавить
> fastcgi_buffer_size с соответствующим размером (а надо ли?
> Документация говорит что этот буфер по умолчанию равен размеру
> буфера из fastcgi_buffers).
fastcgi_buffer_size - это буфер для чтения заголовка.
Потом он используется для тела на равне с fastcgi_buffers.
Его размер может отличаться от fastcgi_buffers:
fastcgi_buffer_size 256k;
fastcgi_buffers 8 16k;
--
Игорь Сысоев
http://sysoev.ru
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|