Understanding break and add_header combo

Hello,

I’m trying to undestand the break; statement in combination with
add_header
combo, on the wiki it says the following:

“Completes the current set of rules. Continue processing within the
current
location block but do not process any more rewrite directives.”

I read this as everything that has todo with the HttpRewriteModule will
not
be processed any more after this statement. I have the following piece
of
config for a rails app:

server {

listen 80;

server_name x;

root /var/www/vhost/x/current/public;
passenger_enabled on;

location ~ ^/assets/ {
expires 1y;
add_header Cache-Control public;

# Some browsers still send conditional-GET requests if there's a
# Last-Modified header or an ETag header even if they haven't
# reached the expiry date sent in the Expires header.
add_header Last-Modified "";
add_header ETag "";
break;

}

Webfonts (they are in /assets)

location ~* .(ttf|ttc|otf|eot|woff)$ {
add_header Access-Control-Allow-Methods GET,OPTIONS;
add_header Access-Control-Allow-Headers *;
add_header Access-Control-Allow-Origin *;
}

}

Now the add_header stuff for webfonts is never set, and I do not
understand
why break has a part in this. When I remove break; it works,
when i put the font location stuff before location ~^/assets/ it also
works.

Hope someone can shine some light on this.

Kind Regards,

Frodo L.

Posted at Nginx Forum:

On Thu, May 02, 2013 at 11:53:12AM -0400, flarik wrote:

Hi there,

location ~ ^/assets/ {

location ~* .(ttf|ttc|otf|eot|woff)$ {

Now the add_header stuff for webfonts is never set, and I do not understand
why break has a part in this. When I remove break; it works,
when i put the font location stuff before location ~^/assets/ it also
works.

What request do you make? What response do you get? What response do
you expect?

In nginx, one request is handled in one location. So I expect that no
more
than one set of add_header directives will apply. And as you only show
regex locations, if the first one matches then it is the one that is
used.

f

Francis D. [email protected]

Francis D. Wrote:

Hello Francis, thanks for your response.

In nginx, one request is handled in one location. So I expect that no
more
than one set of add_header directives will apply. And as you only show
regex locations, if the first one matches then it is the one that is
used.

Ah, that makes sense, thanks!

Regards,

Frodo

Posted at Nginx Forum: