Появляется "мусор" в response_body до и после "ожидаемого body"

Bogun Dmitriy vugluskr at vugluskr.org.ua
Fri Apr 3 01:47:57 MSD 2009


Здравствуйте.

Столкнулся с багом. Скорее всего nginx'а.

Ситуация следующая с ipb форума делается ajax запрос на "быстрое
редактирование" поста. В ответ возвращается страничка у которой в body в
начало и в конец добавлено несколько символов, которых не было в момент
отправки.(Чтобы это проверить я добавил сохранение сформированного
ответа в файл непосредственно перед отдачей клиенту). В начало body
добавляется "8366\n" в конец "\n0". Символы в начале изменяются, в
хвосте всегда 0. Количество символов не меняется...

У глюка есть зависимость от прокси...
Если запрос идет

клиент=>nginx=>apache

глюк проявляется, а если 

клиент=>squid=>nginx=>apache

не проявляется.

Размер body ответа, на момент отдачи его из php 31728 байт, но это лишь
пример, я не знаю точную границу объема для этого запроса, после
которого бага начинает проявляться.

Заподозрил что возможно в проблеме виноват сжатие вывода gzip'ом - убрал
из апача mod_deflate и добавил в вхост nginx'а "gzip off;" - сжатие
исчезло, но проблема осталась на месте.

Моя конфигурация.
# nginx -V
nginx version: nginx/0.6.32
configure arguments: --prefix=/usr --conf-path=/etc/nginx/nginx.conf
--http-log-path=/var/log/nginx/access_log
--error-log-path=/var/log/nginx/error_log --pid-path=/var/run/nginx.pid
--http-client-body-temp-path=/var/tmp/nginx/client
--http-proxy-temp-path=/var/tmp/nginx/proxy
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --with-md5-asm
--with-md5=/usr/include --with-sha1-asm --with-sha1=/usr/include
--without-http_fastcgi_module --with-http_ssl_module
--with-http_stub_status_module
--add-module=/var/tmp/portage/www-servers/nginx-0.6.32/work/nginx_uploadprogress_module

Конфиг vhost'а

upstream upstr_some_forum {
    server      127.0.1.50; 
    server      127.0.100.50 backup;
}
server {
    listen              a.b.c.d;

    server_name .some-forum.ru;

    access_log  /srv/some-forum.ru/log/nginx/access.log;
    access_log  /var/log/nginx/some-forum-access.log generic;
    error_log   /var/log/nginx/some-forum-error.log info;

    location ~ ^/(style_(?:images|emoticons|avatars|captcha)|uploads|jscripts|cache).*\.(?:js|css|gif|png|jpe?g|html)$ { 
        root /srv/some-forum.ru/www/htdocs/$1/;
        expires 7d;
    }
    location / {
        proxy_pass         http://upstr_some_forum;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}


Основной конфиг nginx'а в аттаче.
На upstream'е обычный апач с php'ой. 
ОС - Gentoo linux-2.6.25-hardened-r13
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20090403/70e94de7/attachment.html>
-------------- next part --------------
user nginx nginx;
worker_processes 2;

error_log /var/log/nginx/error.log info;

events {
    worker_connections  1000;
    use epoll;
}

http {
    include		/etc/nginx/mime.types;
    default_type	application/octet-stream;

    log_format generic
	'[$time_local] '
	'rip=$remote_addr lip=$server_addr U=$remote_user '
	'H="$host" Q="$request" C=$status S=$bytes_sent '
	'utime=$upstream_response_time '
	'"$http_referer" "$http_user_agent"';

    connection_pool_size 256;
    client_header_buffer_size 1k;
    large_client_header_buffers	4 2k;
    request_pool_size	4k;

    client_max_body_size 64m;
    client_header_timeout 120;
    client_body_timeout	90;
    send_timeout	90;

    proxy_read_timeout	5m;
    proxy_buffer_size	4k;
    proxy_buffers	16 4k;

    gzip on;
    gzip_min_length	1100;
    gzip_buffers	4 8k;
    gzip_types		text/plain;

    output_buffers	8 64k;
    postpone_output	1460;

    sendfile		on;
    tcp_nopush		on;
    tcp_nodelay		on;
    ignore_invalid_headers on;

    keepalive_timeout	75 20;

    index		index.html;

    # _dummy_
    server {
	listen		213.186.117.227 default;

	server_name_in_redirect off;
	ssi		on;

	access_log	/var/log/nginx/_dummy_-access.log generic;
	error_log	/var/log/nginx/_dummy_-error.log;

	root		/srv/_dummy_/www/htdocs;

	location ~ /.svn/ {
	    deny	all;
	}
    }

    include		/etc/nginx/srv.d/*.conf;
}


More information about the nginx-ru mailing list