ПРОЕКТЫ 


  АРХИВ 


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: Регулярное выражение в s erver_name и редирект



On Tue, Sep 20, 2011 at 06:27:42PM +0400, Вадим Бородин wrote:
> Здравствуйте.
> 
> Есть такой конфиг:
> 
> server {
>     listen 80;
>     server_name
> ~^(www\.)?mysite\.ru(\.(?<lc>[^.]+)\.(?<cluster>[^.]+)\.mypartysite\.name)?$;
>     if ($lc = "") {
>         set $lc rel;
>     }
>     if ($cluster = "") {
>         set $cluster prod;
>     }
>     root   /srv/$cluster/$lc/mysite/htdocs;
>         index  index.php
>     location ~ \.php$ {
>         # отдаётся на fastcgi php
>     }
> }
> 
> В /srv/prod/rel/mysite/htdocs есть директория static.
> 
> Заходим на http://mysite.ru/static/ - получаем 403 (это правильно,
> autoindex'а нет)
> Заходим на http://mysite.ru/static  - (без слеша на конце) получаем редирект
> на http://~
> ^(www\.)?mysite\.ru(\.(?<lc>[^.]+)\.(?<cluster>[^.]+)\.mypartysite\.name)?$/
> static/
> Т.е. редирект на само регулярное выражение из server_name с дописанным в
> начало http:// и дописанным в конец /static/.
> 
> Подскажите, пожалуйста, что происходит.

Вместо if'ов лучше поставить:

http {

    map  $lc_r    $lc  {
         ""       rel;
         default  $lcc;
    }

    map  $cluster_r    $cluster  {
         ""      prod;
         default  $cluster;
    }

    server {
     server_name
 
~^(www\.)?mysite\.ru(\.(?<LC_R>[^.]+)\.(?<CLUSTER_R>[^.]+)\.mypartysite\.name)?$;

А для нормального редиректа
   server_name_in_redirect off;


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

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


 




Copyright © Lexa Software, 1996-2009.