Welcome! Log In Create A New Profile

Advanced

Re: Nginx rewrite: last & break

Maxim Dounin
October 23, 2011 11:28AM
Hello!

On Sat, Oct 22, 2011 at 02:04:21PM +0300, Nginx User wrote:

> On 22 October 2011 06:30, Ryan Chan <ryanchan404@gmail.com> wrote:
> > Anyone would like to do a quick summary for the issue?
>
> Minaev's answer in the serverfault link you provided is the clearest
> explanation I have seen to date of this.
>
> To paraphrase, he says, within a location block, when you use "last"
> the rewrites are stopped and a new subrequest is generated which will

Just a side note: "subrequest" is incorrect term here.

> take all all locations into account. When you use "break" the rewrites
> are stopped and processing continued within the location you are in.
>
> Adding Maxim's statement above into account, outside a location block,
> "break" behaves just like "last" does since there are no location
> directives to run here.
>
> Someone just needs to update the docs if this is correct.

Reading rewrite module docs carefully enough will tell basically
the same:

....
If the URI changed as a result of the execution of directives
inside location, then location is again determined for the new
URI. This cycle can be repeated up to 10 times, after which Nginx
returns a 500 error.
....

....
Example:

rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last;
return 403;

But if we place these directives in location /download/, then it
is necessary to replace flag "last" by "break", otherwise Nginx
will hit the 10 cycle limit and return error 500:

location /download/ {
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break;
return 403;
}
....

The translation though looks awful and needs re-translation;
additionally, it was already polluted with user comments, and this
doesn't improve readability either.

Maxim Dounin

_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

Nginx rewrite: last & break

Ryan Chan October 20, 2011 12:14PM

Re: Nginx rewrite: last & break

Maxim Dounin October 20, 2011 12:40PM

Re: Nginx rewrite: last & break

Nginx User October 20, 2011 12:56PM

Re: Nginx rewrite: last & break

Ryan Chan October 20, 2011 11:16PM

Re: Nginx rewrite: last & break

agentzh October 21, 2011 12:20AM

Re: Nginx rewrite: last & break

Ryan Chan October 21, 2011 11:32PM

Re: Nginx rewrite: last & break

Nginx User October 22, 2011 07:06AM

Re: Nginx rewrite: last & break

locojohn October 22, 2011 10:25AM

Re: Nginx rewrite: last & break

Ryan Chan October 23, 2011 12:40AM

Re: Nginx rewrite: last & break

Maxim Dounin October 23, 2011 11:28AM

Re: Nginx rewrite: last & break

António P. P. Almeida October 24, 2011 08:14PM

Re: Nginx rewrite: last & break

Maxim Dounin October 23, 2011 11:34AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 323
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