Mp4 streaming + X-Accel-Redirect works on dev, fails on prod


How come my Rails app that relies on Nginx to stream mp4 videos to flash
and restricts access with X-Accel-Redirect, works on my dev machine but
fails on the production server?

The config files are 99% the same: dev machine uses mongrel, prod
machine uses passenger.

On the first request I see in my nginx and rails log a request to

Then when I scrub, on my dev machine I see requests to
video.mp4?start=12, etc. But nothing on my production server, the video
restarts from the beginning.

Any idea? I’m sure it’s a stupid thing I’m missing here.

Can someone quickly translate me what’s written in russian on this page:

I’d like to know if it worked for him mp4+X-Accel-Redirect.

Thanks in advance :slight_smile:

It seems that the following was part of the culprit:

location ~ .mp4$ {

By removing the $ sign at the ned of the regexp, I managed to make the
streaming work. This also means the doc written by code-shop is wrong.

Anyway, now I need to tie everything up and combine mp4 with

I currently have the following which does not work:

location ~ /restricted/ {

But I’m not sure it can work out right. As /restricted is the direct
access to the files, which must be prevented. In reality my flash player
gets the file from /restricteds/some/other/path and behind the scenes
Rails will set the appropriate headers.

This would mean that I’m missing a directive that would look like:

location ~ /restricteds/ {
passenger_enabled on;


Am I right?

Or maybe I cannot be done, and in order to secure the downloads I’ll
have to use the secure download module?