Re: Запись в лог значения поля header после x-accel-redirect
Maxim Dounin
mdounin на mdounin.ru
Вс Мар 21 02:04:27 MSK 2010
Hello!
On Sat, Mar 20, 2010 at 05:38:12PM -0400, fortrap wrote:
> Вечер добрый, столкнулся с такой проблемой.
>
> nginx-0.7.64
>
> log_format traffic '$remote_addr $sent_http_userid $sent_http_key';
>
> location / {
> root /var/www;
> index index.php;
> rewrite ^/download/(.*) /d.php?path=$1 last;
> }
>
> location ~ \.php$ {
> fastcgi_pass 127.0.0.1:9000;
> ...
> }
>
> location /protected {
> root /var/www/files;
> internal;
> }
>
> d.php
> <?php
> $u = rand(1000, 1100);
> $k = md5(rand(1,10));
> $path = $_GET["path"];
> header("userid: $u");
> header("key: $k");
> ?>
>
> Вот в таком виде все работает как и ожидалось, в traffic лог
> попадают значения userid и key. но стоит только добавить
> непосредственно отдачу файла
>
> header("Content-disposition: attachment; filename=".$path);
> header("X-Accel-Redirect: /protected/". $path);
>
> userid и key в лог не пишутся, вернее не передаются.
>
> Научите как быть.
При перенаправлении по X-Accel-Redirect из исходного ответа
берутся только заголовки Content-Type, Set-Cookie, P3P,
Content-Disposition, Cache-Control, Expires, Accept-Ranges. Если
нужно передавать что-то ещё - то надо это делать явно, как-то так:
location /protected {
internal;
root ...;
add_header userid $upstream_http_userid;
add_header key $upstream_http_key;
}
Maxim Dounin
Подробная информация о списке рассылки nginx-ru