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
video.mp4?start=0
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.
It seems that the following was part of the culprit:
location ~ .mp4$ {
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
X-Accel-redirect.
I currently have the following which does not work:
location ~ /restricted/ {
mp4;
internal;
}
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: