rewrite в именованный location

Valery Kholodkov valery+nginxru at grid.net.ru
Thu Jul 30 17:04:44 MSD 2009


Борис Долгов пишет:
> Это было бы интересно.
> А сейчас если есть 1000 виртхостов с одинаковой конфигурацией, все это
> будет дублироваться в памяти?
> 
> Мне кажется, можно даже ввести что-то типа
> http {
>     configuration x {
>         fastcgi_pass ....
>         прочее;
>     }
>     server {
>         location @php {
>             use x;
>         }
>         location ~\.php$ {
>             use x;
>         }
>     }
> }
> 
> которые все будут храниться в памяти только 1 раз.

В случае с хэшами даже если специально не выделять одинаковые блоки, то 
конфигурации будут использоваться повторно.

Если модуль написан правильно, то для него две конфигурации с одинаковым 
хэшем равнозначны.

В частности в конструкции:

location /a {
   if (...) {
     return 404;
   }
}

на конфигурацию блока if потребуется столько памяти, сколько занимает 
конфиграция модуля rewrite, а не столько, сколько занимает вся 
конфигурация /a. Тоже самое с limit_except и прочее.

Однако это сложнее программировать, поскольку придется помнить про хэши.

> 30 июля 2009 г. 14:40 пользователь Valery Kholodkov
> (valery+nginxru at grid.net.ru) написал:
>> Igor Sysoev пишет:
>>
>>>> Этот же код из @fcgi дублируется еще в двух location-ах, поскольку
>>>> извращаться с искусственным перенаправлением ошибки мне не хотелось. А
>>>> так везде можно написать goto @fcgi; - что будет и компактнее и
>>>> понятнее и проще поддерживать.
>>> На мой взгляд, такое синтаксически нужно делать так:
>>>
>>>   location  ~\.php$
>>>             @fcgi
>>>             ...
>>>   {
>>>        ...
>>>   }
>>>
>>> Кстати, это ещё и сэкономит память. Только там есть одна проблема в том,
>>> что имя location'а хранится в конфигурации. Как сделать, чтобы несолько
>>> location'ов имели одну и ту же конфигруацию - пока не знаю.
>> Можно создавать один location для каждого аргумента директивы, но в то же
>> время дедуплицировать конфигурацию хешем. Это к тому же исключит все
>> остальные случаи дуплицирования конфигурации.
>>
>> --
>> Best regards,
>> Valery Kholodkov
>>
>>
> 
> 
> 


-- 
Best regards,
Valery Kholodkov





More information about the nginx-ru mailing list