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

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


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