Header modification with X-Accel-Redirect

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Header modification with X-Accel-Redirect

Brice Leroy
Hi,
   I'm using X-Accel-Redirect and I would like to log modified header  
information at the same time. But when X-Accel-Redirect clear  return  
his own header , so I can never get the clip variable :(

- Brice

My Django view
...
    response = HttpResponse(status=200)
     response['Cache-Control'] = 'no-cache'
     response['Pragma'] = 'no-cache'
     response['Content-Type'] = ""
     response['clip'] = one_time_access.clip.id
     response['method'] = 'one_time_access_view'
     response['X-Accel-Redirect'] = url
     return response

and my nginx configuration:

server {
     listen   80;
     server_name xxx.yyy.com;
       
     log_format main
                '[$time_local]\n'
      'ip=$remote_addr\n'
      'request="$request"\n'
      'bytes=$body_bytes_sent\n'
                'clipid=$sent_http_clip\n'
                'method=$sent_http_method\n'
                '"$sent_http_pragma"=$sent_http_pragma'
                '_EOE_\n';

     access_log  /home/kev/logs/access.log main;
     error_log  /home/kev/logs/error.log;

     #add_header           Front-End-Https    on;

     location / {
         proxy_pass http://127.0.0.1:8899/;
         #proxy_set_header X-Forwarded-Protocol "https";
         proxy_set_header  Host       $host;
         proxy_set_header  X-Real-IP  $remote_addr;
         client_max_body_size       3000m;
        }

     location /media/ {
         alias /home/kev/clipbuilder/media/;
        internal;
     }

     location /static/ {
         alias /home/kev/clipbuilder/static/;
     }

     location /adminmedia/ {
         alias /usr/local/src/django-trunk/django/contrib/admin/media/;
     }

     error_page   500 502 503 504  /50x.html;
     location = /50x.html {
        root   /var/www/nginx-default;
     }
}


Reply | Threaded
Open this post in threaded view
|

Header modification with X-Accel-Redirect

Brice Leroy
My previous email was maybe unclear. I'm trying to log the bandwidth usage per clip I serve. because every clip are static file, I'm using x-accel-redirect to serve them. So I'm adding clip value to the header to log it using nginx with body_bytes_sent so I can know how much bandwidth has been used for this clip. But it seams that using  x-accel-redirect doesn't allow header modification because my log don't get the information. But if I remove the x-accel-redirect (of course in this case I don't get the file) the clip value injected in the header appear in my logs ! Any idea to make this value appear when I use X-Accel-Redirect ?

Thanks :)

Brice

Begin forwarded message:

From: Brice Leroy <[hidden email]>
Date: May 20, 2009 4:41:43 PM PDT
Subject: Header modification with X-Accel-Redirect

Hi,
 I'm using X-Accel-Redirect and I would like to log modified header information at the same time. But when X-Accel-Redirect clear  return his own header , so I can never get the clip variable :(

- Brice

My Django view
...
  response = HttpResponse(status=200)
   response['Cache-Control'] = 'no-cache'
   response['Pragma'] = 'no-cache'
   response['Content-Type'] = ""
   response['clip'] = one_time_access.clip.id
   response['method'] = 'one_time_access_view'
   response['X-Accel-Redirect'] = url
   return response

and my nginx configuration:

server {
   listen   80;
   server_name xxx.yyy.com;

   log_format main
'[$time_local]\n'
    'ip=$remote_addr\n'
    'request="$request"\n'
    'bytes=$body_bytes_sent\n'
'clipid=$sent_http_clip\n'
'method=$sent_http_method\n'
'"$sent_http_pragma"=$sent_http_pragma'
'_EOE_\n';

   access_log  /home/kev/logs/access.log main;
   error_log  /home/kev/logs/error.log;

   #add_header           Front-End-Https    on;

   location / {
       proxy_pass http://127.0.0.1:8899/;
       #proxy_set_header X-Forwarded-Protocol "https";
       proxy_set_header  Host       $host;
       proxy_set_header  X-Real-IP  $remote_addr;
       client_max_body_size       3000m;
}

   location /media/ {
       alias /home/kev/clipbuilder/media/;
internal;
   }

   location /static/ {
       alias /home/kev/clipbuilder/static/;
   }

   location /adminmedia/ {
       alias /usr/local/src/django-trunk/django/contrib/admin/media/;
   }

   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
root   /var/www/nginx-default;
   }
}


Reply | Threaded
Open this post in threaded view
|

Re: Header modification with X-Accel-Redirect

Denis F. Latypoff
Hello Brice,

Thursday, May 21, 2009, 7:03:38 AM, you wrote:

> My previous email was maybe unclear. I'm trying to log the bandwidth  
> usage per clip I serve. because every clip are static file, I'm using
> x-accel-redirect to serve them. So I'm adding clip value to the header
> to log it using nginx with body_bytes_sent so I can know how much  
> bandwidth has been used for this clip. But it seams that using  x-
> accel-redirect doesn't allow header modification because my log don't
> get the information. But if I remove the x-accel-redirect (of course  
> in this case I don't get the file) the clip value injected in the  
> header appear in my logs ! Any idea to make this value appear when I  
> use X-Accel-Redirect ?

    location /media/ {
        add_header   clip    $upstream_http_clip;
        add_header   method  $upstream_http_method;
        alias /home/kev/clipbuilder/media/;
        internal;
    }

> Thanks :)

> Brice

> Begin forwarded message:

>> From: Brice Leroy <[hidden email]>
>> Date: May 20, 2009 4:41:43 PM PDT
>> To: [hidden email]
>> Subject: Header modification with X-Accel-Redirect
>>
>> Hi,
>>  I'm using X-Accel-Redirect and I would like to log modified header  
>> information at the same time. But when X-Accel-Redirect clear  
>> return his own header , so I can never get the clip variable :(
>>
>> - Brice
>>
>> My Django view
>> ...
>>   response = HttpResponse(status=200)
>>    response['Cache-Control'] = 'no-cache'
>>    response['Pragma'] = 'no-cache'
>>    response['Content-Type'] = ""
>>    response['clip'] = one_time_access.clip.id
>>    response['method'] = 'one_time_access_view'
>>    response['X-Accel-Redirect'] = url
>>    return response
>>
>> and my nginx configuration:
>>
>> server {
>>    listen   80;
>>    server_name xxx.yyy.com;
>>      
>>    log_format main
>>               '[$time_local]\n'
>>               'ip=$remote_addr\n'
>>               'request="$request"\n'
>>               'bytes=$body_bytes_sent\n'
>>               'clipid=$sent_http_clip\n'
>>               'method=$sent_http_method\n'
>>               '"$sent_http_pragma"=$sent_http_pragma'
>>               '_EOE_\n';
>>
>>    access_log  /home/kev/logs/access.log main;
>>    error_log  /home/kev/logs/error.log;
>>
>>    #add_header           Front-End-Https    on;
>>
>>    location / {
>>        proxy_pass http://127.0.0.1:8899/;
>>        #proxy_set_header X-Forwarded-Protocol "https";
>>        proxy_set_header  Host       $host;
>>        proxy_set_header  X-Real-IP  $remote_addr;
>>        client_max_body_size       3000m;
>>       }
>>
>>    location /media/ {
>>        alias /home/kev/clipbuilder/media/;
>>       internal;
>>    }
>>
>>    location /static/ {
>>        alias /home/kev/clipbuilder/static/;
>>    }
>>
>>    location /adminmedia/ {
>>        alias /usr/local/src/django-trunk/django/contrib/admin/media/;
>>    }
>>
>>    error_page   500 502 503 504  /50x.html;
>>    location = /50x.html {
>>       root   /var/www/nginx-default;
>>    }
>> }
>>




> __________ NOD32 4090 (20090520) Information __________

> This message was checked by NOD32 antivirus system.
> http://www.eset.com



--
Best regards,
 Denis                            mailto:[hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: Header modification with X-Accel-Redirect

Brice Leroy
Thanks Denis ! It's working.

NGinx rocks !


On May 20, 2009, at 9:59 PM, Denis F. Latypoff wrote:

> Hello Brice,
>
> Thursday, May 21, 2009, 7:03:38 AM, you wrote:
>
>> My previous email was maybe unclear. I'm trying to log the bandwidth
>> usage per clip I serve. because every clip are static file, I'm using
>> x-accel-redirect to serve them. So I'm adding clip value to the  
>> header
>> to log it using nginx with body_bytes_sent so I can know how much
>> bandwidth has been used for this clip. But it seams that using  x-
>> accel-redirect doesn't allow header modification because my log don't
>> get the information. But if I remove the x-accel-redirect (of course
>> in this case I don't get the file) the clip value injected in the
>> header appear in my logs ! Any idea to make this value appear when I
>> use X-Accel-Redirect ?
>
>    location /media/ {
>        add_header   clip    $upstream_http_clip;
>        add_header   method  $upstream_http_method;
>        alias /home/kev/clipbuilder/media/;
>        internal;
>    }
>
>> Thanks :)
>
>> Brice
>
>> Begin forwarded message:
>
>>> From: Brice Leroy <[hidden email]>
>>> Date: May 20, 2009 4:41:43 PM PDT
>>> To: [hidden email]
>>> Subject: Header modification with X-Accel-Redirect
>>>
>>> Hi,
>>> I'm using X-Accel-Redirect and I would like to log modified header
>>> information at the same time. But when X-Accel-Redirect clear
>>> return his own header , so I can never get the clip variable :(
>>>
>>> - Brice
>>>
>>> My Django view
>>> ...
>>>  response = HttpResponse(status=200)
>>>   response['Cache-Control'] = 'no-cache'
>>>   response['Pragma'] = 'no-cache'
>>>   response['Content-Type'] = ""
>>>   response['clip'] = one_time_access.clip.id
>>>   response['method'] = 'one_time_access_view'
>>>   response['X-Accel-Redirect'] = url
>>>   return response
>>>
>>> and my nginx configuration:
>>>
>>> server {
>>>   listen   80;
>>>   server_name xxx.yyy.com;
>>>
>>>   log_format main
>>>              '[$time_local]\n'
>>>              'ip=$remote_addr\n'
>>>              'request="$request"\n'
>>>              'bytes=$body_bytes_sent\n'
>>>              'clipid=$sent_http_clip\n'
>>>              'method=$sent_http_method\n'
>>>              '"$sent_http_pragma"=$sent_http_pragma'
>>>              '_EOE_\n';
>>>
>>>   access_log  /home/kev/logs/access.log main;
>>>   error_log  /home/kev/logs/error.log;
>>>
>>>   #add_header           Front-End-Https    on;
>>>
>>>   location / {
>>>       proxy_pass http://127.0.0.1:8899/;
>>>       #proxy_set_header X-Forwarded-Protocol "https";
>>>       proxy_set_header  Host       $host;
>>>       proxy_set_header  X-Real-IP  $remote_addr;
>>>       client_max_body_size       3000m;
>>>      }
>>>
>>>   location /media/ {
>>>       alias /home/kev/clipbuilder/media/;
>>>      internal;
>>>   }
>>>
>>>   location /static/ {
>>>       alias /home/kev/clipbuilder/static/;
>>>   }
>>>
>>>   location /adminmedia/ {
>>>       alias /usr/local/src/django-trunk/django/contrib/admin/media/;
>>>   }
>>>
>>>   error_page   500 502 503 504  /50x.html;
>>>   location = /50x.html {
>>>      root   /var/www/nginx-default;
>>>   }
>>> }
>>>
>
>
>
>
>> __________ NOD32 4090 (20090520) Information __________
>
>> This message was checked by NOD32 antivirus system.
>> http://www.eset.com
>
>
>
> --
> Best regards,
> Denis                            mailto:[hidden email]
>
>