Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Появляются лишние символы при использовании SSI echo.
Hello!
On Tue, Feb 17, 2009 at 09:39:55PM +0500, Владислав Щапов wrote:
> Здравствуйте.
>
> Отловил Debug-log на nginx 0.7.34. На версии 0.7.35 баг не исчез, НО стал
> проявляться значительно реже.
> Проблема возникает в файле /static/XXXXXXXX_menu.html?menu_account=selected
> (Х-ами заменено реальное название но количество символов сохранено. Такие-же
> замены сделаны и в логах)
> Результат вывода echo такой "<li class="tab3 selected/rpc">" хотя в этом
> месте явно должен был быть код '<li class="tab3 selected">'. При следующем
> запросе вывелось "<li class="tab3 selectedml" >="">", потом "<li
> class="tab3
> selectedq??">".
Workaround - вместо
<!--#include virtual="/static/XXXXXXXX_menu.html?menu_account=selected" -->
использовать
<!--#include virtual="/static/XXXXXXXX_menu.html?menu_account=selected&" -->
(добавлен '&'). Это лечит не все проблемы, но большую часть.
Патч нарисую завтра если Игорь не успеет раньше.
To Игорь:
В функции ngx_http_arg() утверждение
/*
* although r->args.data is not null-terminated by itself,
* however, there is null in the end of request line
*/
не является правдой для подзапросов из ssi.
Maxim Dounin
>
> Так-же в конце лога подозрительно выглядят строчки "2009/02/17 21:01:23
> [debug] 5669#0: *2280 free: 00000000"
>
> 16 февраля 2009 г. 18:22 пользователь Владислав Щапов
> <phprus@xxxxxxxxx>написал:
>
> > Здравствуйте.
> > Nginx и так был собран с --with-debug.
> > Жаль, что дебаг лог я вчера включить не догадался. Сегодня при помощи ab
> > сделал более 10к запросов к различным страничкам и в том числе к проблемным,
> > но все запросы окончились успешно, те размеры отдаваемых страниц были точно
> > такие какие должны были быть, да и ручное кликание по ссылкам результата не
> > дало. Буду продолжать попытки воспроизвести баг.
> >
> > Кусок HTML'я в котором выводятся некорректное значение вот такой:
> >
> > <!--# if expr="$account" -->
> > <li class="tab3 <!--# echo var="arg_menu_account" default="" -->">
> > <a href="/account/">Мой аккаунт</a>
> > <ul class="submenu tab_cnt_2">
> > <li><a href="/account/">Мой аккаунт</a></li>
> > <li><a href="/account/EditPasswd">Изменить email и
> > пароль</a></li>
> > <!-- <li><a href="/account/Setting">Настройки</a></li> -->
> > </ul>
> > </li>
> > <!--# endif -->
> >
> > Ожидается, что на месте <!--# echo var="arg_menu_account" default="" -->
> > выведется selected, но выводилось следующее: "selected85;", "selectedml?m" а
> > так-же другие символы(в том числе и не алфавитно-цифровые) которых я не
> > помню.
> >
> > nginx скомпилирован таким образом:
> > ./configure --prefix=/usr/local/nginx > > --error-log-path=/var/log/nginx/error.log > > --http-log-path=/var/log/nginx/access.log > > --http-client-body-temp-path=/var/spool/nginx/client_body_temp
> > > > --http-proxy-temp-path=/var/spool/nginx/proxy_temp > > --http-fastcgi-temp-path=/var/spool/nginx/fastcgi_temp > > --pid-path=/var/run/nginx/nginx.pid > > --with-http_ssl_module > > --with-http_sub_module > > --with-http_gzip_static_module > > --with-http_addition_module > > --with-http_flv_module > > --with-http_xslt_module > > --with-http_secure_link_module > > --with-http_dav_module > > --with-debug
> >
> >
> > 16 февраля 2009 г. 1:56 пользователь Maxim Dounin
> > <mdounin@xxxxxxxxxx>написал:
> >
> > Hello!
> >>
> >> On Sun, Feb 15, 2009 at 11:10:11PM +0500, Владислав Щапов wrote:
> >>
> >> > Накаркал. Сейчас эти лишние символы стали появляться буквально через
> >> раз, но
> >> > зато удалось заметить, что их либо 3 либо 4 штуки. :(
> >> >
> >> > Кстати забыл еще упомянуть такую деталь, что этот echo находится внутри
> >> if'а
> >> > который проверяет существование другой переменной, которая
> >> устанавливается
> >> > или не устанавливается в подключаемой внешним файлом при помощи include
> >> (с
> >> > указанием параметра wait="yes") html-странице.
> >>
> >> Постарайтесь сделать debug log для запроса, на котором проявляется
> >> проблема. Для этого надо собрать nginx с параметром configure
> >> --with-debug. Логгирование с уровнем debug можно включить для
> >> конкретных ip-адресов так:
> >>
> >> events {
> >> ...
> >> debug_connection 127.0.0.1;
> >> debug_connection 192.168.0.0/16;
> >> }
> >>
> >> Имея debug log можно будет пытаться что-то понять (также
> >> желательно полный исходный код ssi-страницы, и результат запроса с
> >> видимой проблемой).
> >>
> >> Maxim Dounin
> >>
> >> >
> >> > 15 февраля 2009 г. 18:49 пользователь Владислав Щапов <phprus@xxxxxxxxx
> >> >написал:
> >> >
> >> > > Здравствуйте.
> >> > > Есть nginx 0.7.34
> >> > > Столкнулся с тем, что при использовании конструкции <!--# echo
> >> > > var="arg_menu_account" default="" --> после самого значения параметра
> >> иногда
> >> > > выводятся несколько левых символов (два раза выводились 3 лишних
> >> символа,
> >> > > один раз 4). Параметр menu_account в строке запроса имеет значение
> >> selected.
> >> > > Специально воспроизвести эту проблему не получилось.
> >> > >
> >> > > Подскажите пожалуйста, в чем может быть причина такого странного
> >> поведения
> >> > > Nginx?
> >> > >
> >>
> >>
> >
|