captures in regex location

Vladimir Sopot jd at artdesign.ru
Thu Mar 5 15:46:55 MSK 2009


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

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
>
>






More information about the nginx-ru mailing list