Спасибо за map - не знал.<br>А вот server_name_in_redirect пробовал - почему-то не помогает. На всякий случай пробовал в контекстах http и server.<br><br># nginx -V<br>nginx version: nginx/0.8.35<br>TLS SNI support enabled<br>
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<br>
<br><br><div class="gmail_quote">20 сентября 2011 г. 18:52 пользователь Igor Sysoev <span dir="ltr"><<a href="mailto:igor@sysoev.ru">igor@sysoev.ru</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div><div></div><div class="h5">On Tue, Sep 20, 2011 at 06:27:42PM +0400, Вадим Бородин wrote:<br>
> Здравствуйте.<br>
><br>
> Есть такой конфиг:<br>
><br>
> server {<br>
> listen 80;<br>
> server_name<br>
> ~^(www\.)?mysite\.ru(\.(?<lc>[^.]+)\.(?<cluster>[^.]+)\.mypartysite\.name)?$;<br>
> if ($lc = "") {<br>
> set $lc rel;<br>
> }<br>
> if ($cluster = "") {<br>
> set $cluster prod;<br>
> }<br>
> root /srv/$cluster/$lc/mysite/htdocs;<br>
> index index.php<br>
> location ~ \.php$ {<br>
> # отдаётся на fastcgi php<br>
> }<br>
> }<br>
><br>
> В /srv/prod/rel/mysite/htdocs есть директория static.<br>
><br>
> Заходим на <a href="http://mysite.ru/static/" target="_blank">http://mysite.ru/static/</a> - получаем 403 (это правильно,<br>
> autoindex'а нет)<br>
> Заходим на <a href="http://mysite.ru/static" target="_blank">http://mysite.ru/static</a> - (без слеша на конце) получаем редирект<br>
> на http://~<br>
> ^(www\.)?mysite\.ru(\.(?<lc>[^.]+)\.(?<cluster>[^.]+)\.mypartysite\.name)?$/<br>
> static/<br>
> Т.е. редирект на само регулярное выражение из server_name с дописанным в<br>
> начало http:// и дописанным в конец /static/.<br>
><br>
> Подскажите, пожалуйста, что происходит.<br>
<br>
</div></div>Вместо if'ов лучше поставить:<br>
<br>
http {<br>
<br>
map $lc_r $lc {<br>
"" rel;<br>
default $lcc;<br>
}<br>
<br>
map $cluster_r $cluster {<br>
"" prod;<br>
default $cluster;<br>
}<br>
<br>
server {<br>
server_name<br>
~^(www\.)?mysite\.ru(\.(?<LC_R>[^.]+)\.(?<CLUSTER_R>[^.]+)\.mypartysite\.name)?$;<br>
<br>
А для нормального редиректа<br>
server_name_in_redirect off;<br>
<font color="#888888"><br>
<br>
--<br>
Игорь Сысоев<br>
<a href="http://sysoev.ru" target="_blank">http://sysoev.ru</a><br>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></font></blockquote></div><br><br clear="all"><br>-- <br>С уважением,<br>
Бородин Вадим<br>
<a href="mailto:borodin.vadim@gmail.com" target="_blank">borodin.vadim@gmail.com</a><br>
skype: borodin_v_v<br>