Re: proxy_pass и gzip с буферизацией бьёт большие ответы
Maxim Dounin
mdounin на mdounin.ru
Чт Мар 1 09:14:47 UTC 2012
Hello!
On Thu, Mar 01, 2012 at 11:58:28AM +0400, Brian Sandro wrote:
> Доброго времени суток.
>
> Использование nginx как прокси вкупе с gzip ужасно бьёт вывод большого
> ответа от бэкенда - в конец ответа добавляется или мусор, или ответ
> обрезается.
> Пробовал увеличивать все возможные буферы - не помогло, вывод по-прежнему
> сбитый. Отключение буферизации создаёт другие проблемы, поэтому не хочется
> прибегать к такому способу.
>
> Текущий конфиг:
>
> proxy_buffering on;
> keepalive_timeout 600;
> proxy_read_timeout 600;
>
> proxy_buffer_size 992k;
> proxy_buffers 32 32k;
> proxy_busy_buffers_size 992k;
>
> proxy_headers_hash_bucket_size 2048;
> proxy_headers_hash_max_size 1024;
>
>
> access_log /home/pp/logs/pp.access_log combined;
> error_log /home/pp/logs/pp.error_log warn;
>
> gzip on;
> gzip_min_length 1460;
> gzip_comp_level 5;
> gzip_buffers 128 8k;
> gzip_proxied any;
> gzip_types text/plain text/xml application/xml
> application/x-javascript application/json text/javascript text/css
> text/json;
> gzip_disable "MSIE [1-6]\.(?!.*SV1)";
>
> output_buffers 4 256k;
> postpone_output 1460;
Нужен вывод nginx -V, ответ nginx'а (тот, что битый, но *до* того,
как его кто-нибудь попытается распаковать), оригинальный
ответ бекенда для сравнения, и debug log.
Как сделать debug log написано тут:
http://nginx.org/ru/docs/debugging_log.html
Ответы (nginx'а и оригинальный) проще всего наверное снять с сети
tcpdump'ом (что-нибудь вроде "tcpdump -npi <iface> -w dumpfile -s0
<условие>").
Maxim Dounin
Подробная информация о списке рассылки nginx-ru