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

Alexey V. Karagodov kav at karagodov.name
Thu Jul 30 23:32:19 MSD 2009


On 30.07.2009, at 20:38, Peter A Leonov wrote:

> Заюзать use мне бы тоже очень хотелось. А то кроме инклюда и нет  
> больше оружия против копипаста :(
а зачем вообще? измениться размер конфига в памяти? скорость работы?  
простота написания? простота реализации? простота парсенья?
>
>
> С уважением,
> Петр Леонов.
> +7 (905) 758-12-73
>
> On 30.07.2009, at 19:50, Gena Makhomed <gmm at csdoc.com> wrote:
>
>> On Thursday, July 30, 2009 at 14:37:39, Борис Долгов wrote:
>>
>> БД> Мне кажется, можно даже ввести что-то типа
>>
>> БД> http {
>> БД>     configuration x {
>> БД>         fastcgi_pass ....
>> БД>         прочее;
>> БД>     }
>> БД>     server {
>> БД>         location @php {
>>
-             include x.conf;
+             use x;
о_О
>> БД>         }
>> БД>         location ~\.php$ {
>> БД>             use x;
>> БД>         }
>> БД>     }
>> БД> }
>>
>> БД> которые все будут храниться в памяти только 1 раз.
>>
>> по сути это аналог директивы include, только вместо того,
>> чтобы делать много мелких файлов для include, можно будет
>> сделать именованные фрагменты конфигурации в одном файле.
>>
>> например:
>>
>> http {
>>
>>   config http_backend {
>>       proxy_set_header  Host $host;
>>       proxy_set_header  X-Real-IP $remote_addr;
>>       proxy_set_header  X-Nginx-Scheme $scheme;
>>       proxy_pass http://127.0.0.1/;
>>   }
>>
>>   config fastcgi_backend {
>>       ...
>>   }
>>
>>   server {
>>       server_name www.example.com;
>>       location / {
>>           use http_backend;
>>       }
>>   }
>>
>>   server {
>>       server_name www.example.net;
>>       location / {
>>           use fastcgi_backend;
>>       }
>>   }
>> }
>>
>> если в различных виртуальных серверах nginx
>> есть одинаковые фрагменты конфига, например,
>> отдача статических файлов или контролируемые
>> скачивания - это тоже кандидаты на config { }
>>
>> аналогично, через один блок config { }
>> можно было бы описать общие фрагменты
>> конфигурации для http и https-серверов,
>> при внесении изменений - надо будет
>> править конфиг только в одном месте.
>>
>> DRY principle - Don't repeat yourself.
>>
>> PS параметр "ssl" в директиве "listen"
>> можно использовать только для полностью
>> идентичных конфигураций. например, если
>> для location /admin/ у https сервера
>> нужен один конфиг, а у http сервера -
>> редирект на https, тогда придется делать
>> два полностью отдельных конфига server { },
>> или использовать внутри if, что еще хуже,
>> или несколько файлов и использовать include,
>> что становится еще более неудобным при большом
>> количестве виртуальных хостов на сервере.
>> удобнее было бы 1 хост == 1 файл конфига,
>> и include /etc/nginx/conf/virtual/*.conf;
>>
>> -- 
>> Best regards,
>> Gena
>>
>>
>






More information about the nginx-ru mailing list