Re: Проблема при использовании модуля ngx_http_userid_module и ngx_http_proxy_module

Владислав Щапов phprus at gmail.com
Wed Sep 10 19:21:59 MSD 2008


Не смотря на то, что в списке изменений написано, что: "Добавление:
переменные $uid_got и $uid_set можно использовать на любой стадии обработки
запроса." судя по коду переменная $uid_set устанавливается ТОЛЬКО в момент
отдачи контента пользователю и передать ее в backend нельзя.

Я изменил модуль userid вынеся код генерации UID в отдельную функцию и
добавил вызовы этой функции при попытке получить переменную $uid_set в
случае если переменная $uid_got не установлена. В случае если
устанавливаются cookie версии 2 мои изменения должны работать корректно.

Во вложении измененный мною файл ngx_http_userid_filter_module.c от версии
nginx 0.7.15.

Если кого-либо интересует это изменение, то протестируйте его пожалуйста.

8 сентября 2008 г. 16:06 пользователь Владислав Щапов <phprus at gmail.com>написал:

> Дальнейшие исследования показали, что переменная $uid_set не заполняется
> только в случае если она используется не только в директиве log_format.
> У меня в конфиге был код, который в зависимости от того какая из переменных
> ($uid_set, $uid_got) установлена устанавливал еще одну переменную.
> Однако в списке изменений написано, что начиная с версии 0.7.0:
>
>> Добавление: переменные $uid_got и $uid_set можно использовать на любой
>> стадии обработки запроса.
>
> Может-быть я не правильно понимаю это изменение и все-же переменную
> $uid_set можно использовать только для записи в лог?
>
> 2 сентября 2008 г. 18:41 пользователь Владислав Щапов <phprus at gmail.com>написал:
>
> Здравствуйте.
>>
>> Столкнулся с такой проблемой.
>> В конфигурации виртуального сервера включена поддержка модуля userid
>> (userid on;). Один из location'ов использует ngx_http_proxy_module для
>> обращения к apache на backend'е.
>> Если пользователь не имеющий cookie от модуля userid первый раз заходит на
>> страницу, которая перенаправляется на backend, то cookie ему
>> устанавливается, но переменная $uid_set остается пустой и соответственно не
>> пишется в логи. В случае если первый раз пользователь зайдет на статическую
>> страницу, то переменная $uid_set нормально заполняется.
>> Подскажите пожалуйста в чем может быть проблема.
>>
>> Версия nginx - 0.7.14.
>> ОС - OpenSuSe 11.0
>> Команда для сборки:
>> ./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
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20080910/b5634ba0/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ngx_http_userid_filter_module.c
Type: text/x-c++src
Size: 21775 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20080910/b5634ba0/attachment.c>


More information about the nginx-ru mailing list