X-Accel-Redirect

I’m using nginx in two different points.

As reverse proxy, and as webserver.

  1. Webserver with php fastcgi

http://www.domain.com/file.zip, is really a php that stores some stats
about our customers downloads.
When it has stored all the info it sends an X-Accel-Direct. It works
perfectly.

  1. Reverse proxy

We have setup some nginx in our customers nodes, to they get better
latency, speed, etc…

Everything works ok.

Now the prob is that for earch download, nginx-2 ( reverse proxy ) has
to download everythin from nginx-2 ( webserver ) and then upload
everything to the client.

This generates a lot of traffic.

As we only need to get some info about the client, we have thought about
storing the download folder into nginx-2, and be able to send the
x-accel-redirect from nginx-1 to nginx-2.

So the php gets executed in the nginx-1, info stored, and the phisical
download done from nginx-2, without transfering gigs and gigs of data.

Is there an easy way to rename the X-Accel-Redirect header on nginx-2 so
we can sent it from nginx-1 to nginx-2? So nginx-1 works with the
standard X-Accel-Redirect header, and nginx-2 with ( example )
X-Local-Redirect.

Or another way to accomplish this workflow?

Thnx a lot!

Posted at Nginx Forum:

Hello!

On Wed, Mar 10, 2010 at 05:45:34AM -0500, Alberto wrote:

[…]

As we only need to get some info about the client, we have
thought about storing the download folder into nginx-2, and be
able to send the x-accel-redirect from nginx-1 to nginx-2.

fastcgi_ignore_header X-Accel-Redirect;
fastcgi_pass_header X-Accel-Redirect;

See here for details (in Russian, wiki has no translation yet -
feel free to add one; Google Translate is your friend):

http://sysoev.ru/nginx/docs/http/ngx_http_fastcgi_module.html#fastcgi_ignore_headers
http://sysoev.ru/nginx/docs/http/ngx_http_fastcgi_module.html#fastcgi_pass_header

Maxim D.

Thnx, this one should work!!!

In the doc is not clear, but I suppose i have to add both.

fastcgi_ignore_headers, just to not process the header, and
fastcgi_pass_header to sent it to the next node.

Or does fastcgi_pass_header already ignores it?

Posted at Nginx Forum:

Thnx a lot for it worked flawlessly :slight_smile:

We have reduced our traffic from 280 mbit / sec to 140 mbit on some
servers :smiley:

Posted at Nginx Forum:

Hello!

On Wed, Mar 10, 2010 at 06:59:27AM -0500, Alberto wrote:

Thnx, this one should work!!!

In the doc is not clear, but I suppose i have to add both.

fastcgi_ignore_headers, just to not process the header, and
fastcgi_pass_header to sent it to the next node.

Yes. I wrote exact snippet you have to add to appropriate
location with fastcgi_pass.

Or does fastcgi_pass_header already ignores it?

No.

Maxim D.