X-Accel-Redirect и базовая авторизация

Andrew Velikoredchanin andy at atomail.com
Tue Jan 31 20:20:36 MSK 2006


Igor Sysoev пишет:
> On Tue, 31 Jan 2006, Andrew Velikoredchanin wrote:
> 
>> Igor Sysoev пишет:
>>> On Tue, 31 Jan 2006, Andrew Velikoredchanin wrote:
>>>
>>>> Andrew Velikoredchanin пишет:
>>>>> Igor Sysoev пишет:
>>>>>> On Tue, 31 Jan 2006, Andrew Velikoredchanin wrote:
>>>>>>
>>>>>>> Я сейчас исследую возможность для того что-бы заменить процедуру
>>>>>>> скачивания файлов с апача через скрипт на внутренний редирект с
>>>>>>> этого-же
>>>>>>> скрипта на nginx.
>>>>>>>
>>>>>>> Т.к. у меня обрабатываются логи апача для сбора статистики по
>>>>>>> залогиненным юзерам, теперь мне ее надо будет собирать по логам
>>>>>>> nginx.
>>>>>>> Но я обнаружил что при Accel-Redirect в nginx не передается
>>>>>>> информация
>>>>>>> об авторизации (т.е. в логе нет имени юзера).
>>>>>>>
>>>>>>> Подскажите, плиз, что можно сделать что-бы юзер и в логе nginx
>>>>>>> присуствовал? Я так думаю, что какие-то хидеры вместе с
>>>>>>> X-Accell-Redirect нужно передавать?
>>>>>> В лог можно писать $remote_user, он берётся из заголовка
>>>>>> "Authorization: Basic ...".
>>>>>
>>>>> Я немного неправильно сформулировал. У меня используется не базовая
>>>>> авторизация, а своя по кукам. Есть модуль mod_perl в апаче, который
>>>>> занимается ее проверкой и выставлением соответствующих внутренних
>>>>> переменных апача в нужные значения (что-бы в логе был видел юзер).
>>>>> А вот
>>>>> как это сделать с nginx я как-то и не представляю. В скрипте который
>>>>> формирует X-Accell-Redirect имя юзера доступно (но именно имя юзера, а
>>>>> не заголовок "Authorization:"). Как его можно передать nginx что-бы он
>>>>> его воспринял? Вручную сформировать заголовок "Authorization:"?
>>>>
>>>> Я так понял что решения нет? Может через mod_perl/nginx можно что-то
>>>> сделать (взять имя юзера из куков)?
>>>
>>> Если имя достаётся из куки регулярным вырадением, то можно с помощью
>>> rewrite,
>>> если более сложное, то нужно сделать переменную, а её обработчик на
>>> перле.
>>
>> Да, но обработчик какой именно переменной нужно сделать что-бы она
>> соответствовала имени авторизованного юзера?
>>
>> И передадутся-ли куки через цепочку фронтэнд(nginx) -> бэкэнд(apache
>> cgi) -> фронтэнд(nginx internal) -> бэкэнд(nginx)?
> 
> Кука, переданная клиентом - да. nginx во время после X-Accell-Redirect
> работает с первональным заголовоком запроса.
> 
> Переменная любая:
> 
>        set  $uname   "";
>        if ($http_cookie  ~*  "name=(.+?)(?:;|$)" ) {
>            set  $uname   $1;
>        }

А! Т.е. тогда надо вручную в формате лога указывать эту переменную на
том месте где должно быть имя юзера?






More information about the nginx-ru mailing list