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