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
 
 |