X-accel-redirect serving html download page instead of file.

Maxim Dounin mdounin at mdounin.ru
Mon Sep 3 18:30:40 UTC 2012


Hello!

On Mon, Aug 27, 2012 at 09:29:47PM -0400, wideawake wrote:

> I have a script that uses x-accel-redirect on a nginx server to send large
> files (150mb+). The script serves downloads fine as long as their is a space
> in the name of the directory but not when the directory is a single word.
> Anyone know why it would be doing so when the file exists and the path is
> correct?
> 
> Layout: /Dir/file.exe /Dir2/file.exe /Another Dir/file.exe
> 
> If it's /Another Dir/file.exe it serves the file perfectly, however if its
> /Dir/file.exe it serves the html of the download page. Anyone seen this
> before?

I would suggest that the reason is that rewrites which are 
commented out in the config you've posted:

>   #rewrite ^.*/([-\w\.]+)/([-\w\.]+)\.zip$
> /download.php?model=$1&file=$2.zip last;
>   #rewrite ^.*/([-\w\.]+)/([-\w\.]+)\.exe$
> /download.php?model=$1&file=$2.exe last;
>   #rewrite ^.*/([-\w\.]+)/([-\w\.]+)\.nbh$
> /download.php?model=$1&file=$2.nbh last;
>   #rewrite ^.*/([-\w\.]+)/([-\w\.]+)\.rar$
> /download.php?model=$1&file=$2.rar last;

aren't really commented out.  And any X-Accel-Redirect results in 
rewrite match, and a download.php output being returned instead.  
Obvious solution would be to actually comment them out (or, if 
they are needed, to place them into a location which doesn't match 
URIs returned in X-Accel-Redirect).

(Files/directories with space work as regular expressions above 
doesn't match them.)

Maxim Dounin



More information about the nginx mailing list