Welcome! Log In Create A New Profile

Advanced

Re: Nginx not respecting locations execution ordering

April 18, 2018 05:00PM
Igor Sysoev Wrote:
-------------------------------------------------------
> > On 18 Apr 2018, at 01:35, c0nw0nk <nginx-forum@forum.nginx.org>
> wrote:
> >
> > Thank you for the help :)
> >
> > A new dilemma has occurred from this.
> >
> > I add a location like so.
> >
> > location ^~/media/files/ {
> > add_header X-Location-Order First;
> > }
> > location ~ \.mp4$ {
> > add_header X-Location-MP4 Served-from-MP4-location;
> > }
> > location ~*
> >
> \.(ico|png|jpg|jpeg|gif|flv|mp4|avi|m4v|mov|divx|webm|ogg|mp3|mpeg|mpg
> |swf|css|js)$
> > {
> > add_header X-Location-Order Second;
> > }
> >
> >
> > How can i make it so my MP4 location is not overridden by the
> > ^~/media/files/ location.
> >
> > I would like the responses to be like this.
> >
> > URL : domain_name_dot_com/media/files/image.jpg
> > Header response is X-Location-Order: First
> >
> > URL : domain_name_dot_com/media/files/video.mp4
> > Header response is X-Location-MP4: Served-from-MP4-location
> >
> > URL : domain_name_dot_com/media/files/other.css
> > Header response is X-Location-Order: Second
> >
> >
> > How can I achieve that is it possible to have a location inside a
> location ?
>
> If you prefer execution of the listed order, the you should use regex
> locations only:
>
> location ~ ^/media/files/.+\.mp4$ {
> add_header X-Location-MP4 Served-from-MP4-location;
> }
> location ~ ^/media/files/ {
> add_header X-Location-Order First;
> }
> location ~*
> \.(ico|png|jpg|jpeg|gif|flv|mp4|avi|m4v|mov|divx|webm|ogg|mp3|mpeg|mpg
> |swf|css|js)$ {
> add_header X-Location-Order Second;
> }
>
> However this approach is not scaleable. Suppose you have hundreds of
> locations, then you have
> to find appropriate place where to add a new location and have to
> investigate the whole large
> configuration to understand how this tiny change will affect the
> configuration.
>
> The other approach is to use prefix locations and to isolate regex
> location inside prefix ones:
>
> location / {
> location ~*
> \.(ico|png|jpg|jpeg|gif|flv|mp4|avi|m4v|mov|divx|webm|ogg|mp3|mpeg|mpg
> |swf|css|js)$ {
> add_header X-Location-Order Second;
> }
> }
>
> location /media/files/ {
> add_header X-Location-Order First;
>
> location ~ \.mp4$ {
> add_header X-Location-MP4 Served-from-MP4-location;
> }
> }
>
> With this configuration you can sort the first level prefix locations
> in any order.
>
>
> --
> Igor Sysoev
> http://nginx.com
>
> _______________________________________________
> nginx mailing list
> nginx@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx


Thank you Igor for the information :)

My soloution has become this.

location ^~/media/files/ {
add_header X-Location-Order First;

location ~ \.mp4$ {
add_header X-Location-MP4 Served-from-MP4-location;
}

location ~* \.(ico|png|jpg|jpeg|gif|flv|mp4|avi|m4v|mov|divx|webm|ogg|mp3|mpeg|mpg|swf|css|js)$ {
add_header X-Location-Order Second;
}

}

Super appreciate the help from everyone and info now I know what to do and reflect upon in future :)

http://www.networkflare.com/
Subject Author Posted

Nginx not respecting locations execution ordering

c0nw0nk April 17, 2018 06:13PM

RE: Nginx not respecting locations execution ordering

Reinis Rozitis April 17, 2018 06:22PM

Re: RE: Nginx not respecting locations execution ordering

c0nw0nk April 17, 2018 06:35PM

Re: Nginx not respecting locations execution ordering

Igor Sysoev April 18, 2018 03:10AM

Re: Nginx not respecting locations execution ordering

c0nw0nk April 18, 2018 05:00PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 168
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready