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

Igor Sysoev is at rambler-co.ru
Tue Jan 31 17:22:38 MSK 2006


On Tue, 31 Jan 2006, Andrew Velikoredchanin wrote:

> 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;
>>        }
>
> А! Т.е. тогда надо вручную в формате лога указывать эту переменную на
> том месте где должно быть имя юзера?

Да.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list