exclude some server_name from location processing

Igor Sysoev is at rambler-co.ru
Tue Jan 16 11:55:18 MSK 2007


On Mon, 15 Jan 2007, Martin Minka wrote:

> nginx is great, but I have small problem when I try to use it.
>
> I would like to do something like:
>  # rule 1
>  location ~*
> ^.+.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|css|doc|xls|exe|pdf|ppt|txt|tar
> |mid|midi|wav|bmp|rtf|js|swf|xml)$ {
>
>    # critical part
>    if ($server_name ~* ignore-static.com) {
>        # skip to the next rule #2
>        break;
>    }
> ......
>  }
>
>  # rule 1
>  location / {
>    # non static files
> ......
>  }
>
>
> Any suggestion on how to achieve this ?

Why do you try to mix locations and servers ? In the end you would get
the spaghetti configuration. In general you should route an request
to the specific server using its address/port/name, then you should
route the request using location.

So you should use

     server  {
        server_name   one.ignore-static.com  two.ignore-static.com;

        location / {
           # non static files
           ....
        }
    }

    server  {
        server_name   one.no-ignore-static.com  two.no-ignore-static.com;

        location / {
           # non static files
           ....
        }

        location ~*
     ^.+.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|css|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|xml)$ {
           ....
        }
    }


Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list