ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: server_name regexp


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: server_name regexp
  • From: Anton Koldaev <koldaevav@xxxxxxxxx>
  • Date: Mon, 20 Sep 2010 10:47:13 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:received:in-reply-to :references:from:date:message-id:subject:to:content-type; bh=iyr0Q+XUdXwh4QL6XrLQkTgY1t4URPJiAJzXzbldTB8=; b=oQOM/hBCyNwJGwiPxNiEK8DYyBQ+/GN/x1oHQzTRBDsINzQHfYMLbDW5ojetNC3Zbx yRZ4R6OeX8T60GzPZL589w6QxU9Df4Yo6RnYpYIZUL9iJ2k+wVuexyieweZyMjfjeDXj 7H1ai/B5PhYTkPm/XZX6DtHTxjk+0Sxd+n0aQ=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; b=v6A1zCNVzRfdxJiBylVOytAwOvNFX1XwD01fFrIyDX+d1QcPBHwcvH2opizm1KocQm nREZHXb8XqbIkiqxjKC5PQHyuYhqVt6WQ+K2ZQImOl9oc5am2kLgSpnsPjCbhAsaEoMA 5nFMzZGaDUNA0GADS7/eHmnEcl4rjYKO5YOb0=
  • In-reply-to: <20100920061533.GA74263@xxxxxxxxxxxxx>
  • References: <AANLkTi=hpKUW1W=4VWsXHvZa5eTqW_83GJG4RQT08MtV@xxxxxxxxxxxxxx> <20100920061533.GA74263@xxxxxxxxxxxxx>

Не хочется иметь длинную простыню с аналогичными конфигами. Тем более, если в server-е множество локейшенов, то ведь всю простыню придется повторять в каждом из server {}.
Обошел проблему выставив $host вместо $server_name:

fastcgi_param SERVER_NAME $host;

2010/9/20 Igor Sysoev <igor@xxxxxxxxx>
On Mon, Sep 20, 2010 at 09:51:36AM +0400, Anton Koldaev wrote:

> Привет
> Имею вот такой server_name:
>
> > # Любой поддомен, кроме исключенных
> >   server_name ~(?<!^one|^two|^three|^www)\.sitename\.ru$;
> >
>
> php-файлы проксируются на php-fpm:
>
> >   location ~ \.(php|php4|php5|phtml)$ {
> >     fastcgi_pass 127.0.0.1:9000;
> >     try_files $fastcgi_script_name =404;
> >
> >     fastcgi_param SERVER_NAME $server_name;
> >
> ...
> >
>
> Проблема в том, что в SERVER_NAME попадает именно регексп, а не, например,
> one.sitename.ru.
> Реврайт, после которого фейлится:
>
> > 2010/09/20 09:42:20 [notice] 19176#0: *24 rewritten data:
> > "/urlrewriteprepend.php", args: "logout=yes&CODE=alozovaya", client:
> > 94.198.48.35, server: ~(?<!^one|^two|^three|^www)\.sitename\.ru$, request:
> > "GET /blogs/one/index.php?logout=yes&CODE=one HTTP/1.1", host: "
> > one.sitename.ru", referrer: "http://one.sitename.ru/"
> >
>
> Что отдается в браузере:
>
> > Server not found
> > Firefox can't find the server at ~(.
> >
>
> В адресной строке:
>
> > http://
> > ~%28/?%3C!^one|^two|^three|^www%29\.sitename\.ru$/?logout=yes&CODE=one
> >
>
> Как через fastcgi_param передать верный servername?

   fastcgi_param SERVER_NAME $host;

А зачем использовать инверсную логику - любой поддомен, кроме чего-то-там.
Неужели не проще (легко читается, не правда ли ?) использовать прямую
логику:

server {
   server_name  one.sitename.ru;
}

server {
   server_name  two.sitename.ru;
}

server {
   server_name  three.sitename.ru;
}

server {
   server_name  www.sitename.ru;
}

server {
   listen 80 default_server;
   server_name  _;
}



--
Игорь Сысоев
http://sysoev.ru

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru



--
Best regards,
Koldaev Anton
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.