Help with X-Accel-Redirect and "rewrite or internal redirection cycle" errors

Maxim Dounin mdounin at mdounin.ru
Mon Jun 6 18:55:29 MSD 2011


Hello!

On Mon, Jun 06, 2011 at 03:23:09PM +0100, Iain Barnett wrote:

> 
> On 6 Jun 2011, at 15:07, Maxim Dounin wrote:
> 
> > Hello!
> > 
> > On Mon, Jun 06, 2011 at 01:50:42PM +0100, Iain Barnett wrote:
> > 
> >> I'm trying to use X-Accel-Redirect from a Ruby app to hand over 
> >> downloading of a file to Nginx, but it fails and the error in 
> >> the logs is: 
> >> 
> >> 2011/06/03 09:18:16 [error] 20500#0: *37 rewrite or internal redirection cycle while internal redirect to "/files/file.m4a" while reading response header from upstream, client: 10.0.1.23, server: hercules, request: "GET /download/e2a25db11bdbdd783531783eaa16eafdfc86355b/1307089096/file.m4a/ HTTP/1.1", upstream: "http://127.0.0.1:8679/download/e2a25db11bdbdd783531783eaa16eafdfc86355b/1307089096/file.m4a/", host: "fakehost.blob", referrer: "http://fakehost.blob/music/file.m4a"
> > 
> > Please note "server: hercules".
> > 
> > [...]
> > 
> >> server {
> >>  listen  80;
> >> 
> >>  server_name fakehost.blob;
> > 
> > This is not the server where request is processed.
> 
> Sorry, I made that up :) I didn't want to use the actual 
> host/server name so I filled in some fake bits, and the tasks of 
> Hercules were on my mind - probably because getting computers to 
> do what you want can be like pushing a rock up a hill endlessly 
> :-D
> 
> I should probably have put server: fakehost.blob. Apologies for 
> the confusion. 

There are two options:

1. You understand things enough to mangle logs and configs, and 
you don't need any help with debugging.

2. You need help with debugging.

Choose any one.  Obviously with (1) there are no reasons to post 
anything here.

If you do care enough about your actual server names but still 
need help with debugging - reproduce the problem in sandbox with 
fake names.

> Ah ha! Looking at the original, the server name is from one of 
> the other site's being proxied to. Does this mean I should use 
> an absolute uri for the X-Accel-Redirect header?

No.  The problem is still the same: redirect loop happens not in 
the server{} you provided, but in other one.

You haven't provided any info, so just wild guess: you want to 
read about proxy_ignore_headers directive.  See here:

http://wiki.nginx.org/HttpProxyModule#proxy_ignore_headers

Maxim Dounin



More information about the nginx mailing list