ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



Заюзать use мне бы тоже очень хотелось. А то кроме инклюда и нет больше оружия против копипаста :(


С уважением,
Петр Леонов.
+7 (905) 758-12-73

On 30.07.2009, at 19:50, Gena Makhomed <gmm@xxxxxxxxx> wrote:

On Thursday, July 30, 2009 at 14:37:39, Борис Долгов wrote:

БД> Мне кажется, можно даже ввести что-то типа

БД> http {
БД>     configuration x {
БД>         fastcgi_pass ....
БД>         прочее;
БД>     }
БД>     server {
БД>         location @php {
БД>             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





 




Copyright © Lexa Software, 1996-2009.