ПРОЕКТЫ 


  АРХИВ 


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 и редирект



Спасибо за map - не знал.
А вот server_name_in_redirect пробовал - почему-то не помогает. На всякий случай пробовал в контекстах http и server.

# nginx -V
nginx version: nginx/0.8.35
TLS SNI support enabled
configure arguments: --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/body --http-proxy-temp-path=/var/lib/nginx/proxy --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --with-debug --with-http_stub_status_module --with-http_flv_module --with-http_ssl_module --with-http_dav_module


20 сентября 2011 г. 18:52 пользователь Igor Sysoev <igor@xxxxxxxxx> написал:
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



--
С уважением,
Бородин Вадим
borodin.vadim@xxxxxxxxx
skype: borodin_v_v
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.