ПРОЕКТЫ 


  АРХИВ 


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: captures in regex location



Помимо описанного сервера есть еще секции

server {
        server_name ~^([b|o])(\d)\.site;
        .......
        }

server {
        listen *:80 default bind sndbuf=64k;
        server_name site
        ..........
        }

и добавление пустого сервера не исправило ситуацию.


On Mar 5, 2009, at 2:43 PM, Igor Sysoev wrote:

On Thu, Mar 05, 2009 at 01:57:49PM +0300, Vladimir Sopot wrote:

Спасибо, но что-то оно не того

   server {
       server_name ~^([b|o])(\d)z\.site;

#        if ($host ~* (.)(\d)) {
           set $store_type $1;
           set $store_id $2;
#            }

       root    /wwwroot/site/$store_id/$store_type/;
       }

В таком виде не работает (404), если убрать комментарии - все
становится на свои места. Забрать root внутрь location / { } тоже
ничего не дает. root  /wwwroot/site/$2/$1/ тоже не работает

Скорее всего, regex вообще не исполняется, потому что сервер один -
проверять нечего. Нужно добавить пустой сервер, чтобы nginx начал проверять
server_name:

      server { server_name _; }

On Mar 5, 2009, at 1:17 PM, Igor Sysoev wrote:

On Thu, Mar 05, 2009 at 12:14:55PM +0200, Andrew Sitnikov wrote:

А можно такое же ещё и для server_name?
IS> Новый патч с поддержкой server_name.
можно пример ?

Наверное, как-то так:

  server {
      listen  8000;
      server_name  ~^(?:www\.)?(.+)$;

      location / {
          root   /path/to/$1;
      }
  }


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




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






 




Copyright © Lexa Software, 1996-2009.