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