MP4 module and X-Accel-Redirect

Adrián Navarro adrian at navarro.at
Sun Apr 22 02:03:26 UTC 2012


I have finally resorted to a mixed approach:

- I generate symbolic links (ln -s) from the concealed 'internal'
location to a folder in the public root, only for the files I need
- That folder has a location {} directive, containing the mp4;
parameter to enable streaming support
- This location has an access_by_lua directive, which passes, using
ngx.location.capture, a copy of the request to a local API (written in
PHP) and validates the access
- Also rate limiting

That way I can mimic the usual approach where PHP does all these
checks, in a much more complicated way… But still, it works.

On Sat, Apr 21, 2012 at 2:18 AM, Adrián Navarro <adrian at navarro.at> wrote:
> Hello
>
> I currently have a setup involving nginx-extras (1.1.19) and PHP,
> making heavy use of the X-Accel-Redirect heades to serve files with
> previous authentication. This also enables range requests and so on,
> which work flawlessly.
>
> Sadly, I can't seem to make this approach work with the MP4 streaming
> module. It works as expected with a standalone mp4 file and the
> ?start= parameter works just fine. But passing a request like this:
>
> /request?token=xxx&start=60
>
> Does not work and yields the entire file instead.
>
> My config approach is the following:
>
>        location ~ \.php$ {
>                internal;
>
>                fastcgi_send_timeout 300;
>                fastcgi_read_timeout 300;
>
>                fastcgi_index index.php;
>
>                include fastcgi_params;
>
>                fastcgi_pass 127.0.0.1:9000;
>        }
>
>        location ~ \.mp4$ {
>                mp4;
>        }
>
>        location /files/ {
>                rewrite_by_lua '
> .....misc script to track connections.....
>                        ';
>                internal;
>                mp4;
>                alias /home/service/files/;
>        }
>
>        location /priority {
>                mp4;
>                rewrite ^ /request.php last;
>        }
>
>
> I cannot try any more or different combinations for the mp4 directive,
> I've tried to put it everywhere and just in a few places, and still,
> can't manage to get anything. Some time Google shows some message
> similar to this but dead in the wind without answer.
>
> Thank you for your time.



-- 
Adrián Navarro / (+34) 608 831 094



More information about the nginx mailing list