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