Special headers and X-Accel-Redirect

Kamil Gorlo kgorlo at gmail.com
Mon Jun 6 18:33:39 MSD 2011


Ok,

I've found solution (or workaround - if this is bug in nginx).

I have to put:

 set $x_metadata $upstream_http_x_metadata;

BEFORE

 rewrite ^/files(.*)$ $1 break;

Could you please explain me why?

Thanks,

-- 
kgs

On Mon, Jun 6, 2011 at 3:15 PM, Kamil Gorlo <kgorlo at gmail.com> wrote:
> Oh, and version:
>
> nginx: nginx version: nginx/1.0.4
> nginx: TLS SNI support enabled
> nginx: configure arguments: --with-http_ssl_module
> --with-http_stub_status_module --with-http_realip_module
> --with-http_gzip_static_module --add-module=../modules/upstream_hash
> --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf
> --error-log-path=/var/log/nginx/error.log
> --http-log-path=/var/log/nginx/access.log --prefix=/var/lib/nginx
> --http-client-body-temp-path=/var/lib/nginx/client_body_temp
> --http-proxy-temp-path=/var/lib/nginx/proxy_temp
> --http-fastcgi-temp-path=/var/lib/nginx/fastcgi_temp
> --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock
>
> --
> kgs
>
>
> On Mon, Jun 6, 2011 at 3:15 PM, Kamil Gorlo <kgorlo at gmail.com> wrote:
>> Hi guys,
>>
>> I have small problem with file download using X-Accel-Redirect. I am
>> using Nginx as proxy before some REST API application, some of the
>> requests are for big files which are located at other host - so I am
>> using X-Accel-Redirect to download them. But I have also some metadata
>> connected with file which I want to return in X-metadata header from
>> REST API.
>>
>> So, here is my config:
>>
>>    server {
>>        listen 80;
>>        listen 443 ssl;
>>
>>        server_name some-service.pl;
>>
>>        ssl_certificate /etc/ssl/certs/some-service.pl.pem;
>>        ssl_certificate_key /etc/ssl/private/some-service.pl.key;
>>
>>        client_max_body_size 100M;
>>        client_body_buffer_size 128k;
>>
>>        location / {
>>            if ($http_x_user = "") {
>>              return 502;
>>            }
>>
>>            proxy_pass http://api;
>>            proxy_set_header Host $host;
>>            proxy_set_header X-Forwarded-For
>> $proxy_add_x_forwarded_for;   # client, proxy1, proxy2, ...
>>
>>        }
>>
>>        location /files {
>>            internal;
>>            rewrite ^/files(.*)$ $1 break;
>>
>>            proxy_pass http://filestore;
>>            proxy_hide_header Content-Type;
>>            proxy_hide_header Content-Disposition;
>>
>>            set $x_metadata $upstream_http_x_metadata;
>>
>>            add_header X-metadata $x_metadata;
>>        }
>>    }
>>
>> I am using this trick with set to temporary variable and add_header
>> with this variable (which I've found somewhere on this list), but this
>> is not working. Even simple:
>>
>> set $x_std "testest";
>> add_header X-metadata $x_std;
>>
>> does not work for me.
>>
>> Could please somebody tell me what could be wrong?
>>
>> Thanks,
>>
>> --
>> kgs
>>
>



More information about the nginx mailing list