причина 'upstream sent too big header'?

Alex L. Demidov alexeydemidov на gmail.com
Чт Янв 27 11:47:32 MSK 2011


У моего клиента работает 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).

-- 
Alex L. Demidov (ALD9-RIPE).
http://alexeydemidov.com/
Freelance Consulting.



Подробная информация о списке рассылки nginx-ru