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