Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Re: Аналог FilesMat ch или DirectoryMatch
On Sat, Oct 18, 2008 at 03:40:17PM +0300, Serguei I. Ivantsov wrote:
> Igor Sysoev wrote:
> > On Fri, Oct 17, 2008 at 04:18:11PM +0300, Serguei I. Ivantsov wrote:
> >
> >
> >> Столкнулся с трудностью. Как можно в nginx-е сделать поведение
> >> аналогичное директивам FilesMatch или DirectoryMatch в Apache
> > Никак. По моему опыту настройки Апача такая гибкость ведёт к трудно
> > сопровождаемым конфигурациям. Когда конфиг достигает заметных размеров,
> >
> >
> Если я всё правильно понял, то как раз отсутствие этой самой гибкости и
> приведёт к разрастанию конфига nginx-а. Возьмём мой пример. Есть ~40
> виртуалхостов. И мне в конфиге для каждого (жирным шрифтом) сервера
> нужно прописывать одни и те же настройки:
>
> location ~ \.php$ {
> proxy_pass http://127.0.0.1;
> }
>
> location ~ /\.ht {
> deny all;
> }
>
> Что уже неудобно. А теперь ещё добавим условие: текстовую выдачу из
> /russain/ нужно отдавать в CP1251.
> Будет примерно следующее:
>
> location ~ ^/russian/.*\.html?$ {
> charset windows-1251;
> }
>
> location ~ ^/russian/.*\.php$ {
> proxy_pass http://127.0.0.1:3128;
> charset windows-1251;
> }
>
> location ~ \.php$ {
> proxy_pass http://127.0.0.1:3128;
> }
>
> location ~ /\.ht {
> deny all;
> }
>
>
> Что мне кажется несколько некрасиво.
Безусловно, из-за этого конфиги становятся больше. Но, говоря о конфигах
Апача, я имел ввиду конфиги, в которых была смесь Location'ов, Directory,
Files и Rewrite и при этом всё это было внушительного размера.
При добавлении нового Location'а нужно было смотреть, как вся эта смесь
влияет на новый Location и как влияет на всё остальное какой-нибудь
изменённый параметр где-то в Directory.
Гибкость хороша для конфигурации среднего размера, умещающейся на экран,
когда её можно окинуть взглядом и понять влияние одного на другое. В этом
случае гибкость позволить сэкономить пару строчек, как в вышеописанном
случае. Когда же конфигурации большая, то проще тупо добавлять location'ы,
желательно без регулярных выражений. Я называю это масштабируемостью
конфигурации. Можно возразить, что сайт с конфигурацией среднего размера
вряд ли когда-то станет большим, но я обычно видел сайты, конфигурация
которых росла.
nginx заставляет делать с самого начала масштабируемую конфигурацию:
он несколько усложняет конфигурацию для сайта среднего размера (писать
нужно больше), но упрощает сопровождение растущего сайта (не нужно учитывать
влиянение существенной части старой конфигурации на новую.
--
Игорь Сысоев
http://sysoev.ru
|