don't repeat yourself / copy and paste programming

Gena Makhomed gmm на csdoc.com
Ср Ноя 23 11:11:51 UTC 2011


On 23.11.2011 12:39, Denis F. Latypoff wrote:

>> И ещё вопрос, вот мне нужно в отдельную директорию (админку) разрешить
>> доступ только с определённой сетки. Как это сделать, чтобы в
>> соответствующем location-е не дублировать все proxy* настройки из
>> location-а, который перехватывает .php?

> ну так же - инклудом.
> nginx не будет работать быстрее, если в конфиге меньше строк,
> что за панический страх перед дублированием конфига?

по поводу copy/paste:

http://en.wikipedia.org/wiki/Don%27t_repeat_yourself
http://en.wikipedia.org/wiki/Copy_and_paste_programming

по поводу include:

не просмотрев все конфиги нельзя понять какие сайты
затронет модификация того или иного фрагмента include-файла,
потому что все include-файлы имеют глобальную область видимости.

как вариант - применить трехуровневую схему:

/etc/nginx/nginx.conf
/etc/nginx/virtual/example.com/example.com.conf
/etc/nginx/virtual/example.com/include-file.inc

в таком случае у каждого сайта будет свой собственный
подкаталог и там будут include-файлы только с локальной
областью видимости, которые можно будет безопасно
модифицировать, точно зная, что это не затронет никакие
другие сайты. но это опять же, конфигурирование nginx
методом copy/paste, потому что в 99% случаев
это будут полностью одинаковые копии файлов.

как избавиться от метода copy/paste в том или ином виде:

1. написать свой собственный генератор конфига nginx из DSL.

2. добавить в nginx возможность создавать "макросы"
с локальной областью видимости, тогда можно будет
конфигурировать nginx по принципу "1 сайт == 1 конфиг"
и вместе с тем, избавиться от индусского метода copy/paste.

3. ......................................................... ?

-- 
Best regards,
  Gena



Подробная информация о списке рассылки nginx-ru