Welcome! Log In Create A New Profile

Advanced

Re: Nginx not respecting locations execution ordering

April 18, 2018 03:10AM
> 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
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: 83
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready