Re: limit_req_zone, переменный rate

Maxim Dounin mdounin на mdounin.ru
Сб Мар 13 03:18:27 MSK 2010


Hello!

On Fri, Mar 12, 2010 at 08:15:36PM +0300, Kirill A. Korinskiy wrote:

> At Fri, 12 Mar 2010 19:27:41 +0300,
> Maxim Dounin <mdounin at mdounin.ru> wrote:
> > 
> > Она, на самом деле, хорошая, годная.  И error_page 404 - на самом 
> > деле лучше, чем тот же try_files, ибо не имеет race'ов.
> > 
> 
> try_files это отдельная и сильно больная для меня песня. Внятного объяснения зачем я все
> еще не смог для себя вынести.

Зачем - понятно.  Чтобы if'ы не писали.  Вот if'ы - действительно 
больная тема.

[...]

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

Да нет, он просто опечатался, ничего плохого не имел ввиду.  Не 
надо ему за это электричку.

> > А "неявный" - это кому как.  Я вот этот патчик не на пустом месте 
> > рисовал, а потому что ко мне пришли разбираться:
> > 
> > http://nginx.org/pipermail/nginx-devel/2010-January/000099.html
> > 
> > Понятно, что человек указавший несуществующий именованный location 
> > - сам себе злобный буратино.  Но приличный сервер не должен из-за 
> > этого кушать 100% cpu и переставать обрабатывать запросы, он 
> > ругаться должен.
> > 
> 
> ага, помню.
> 
> Я все-таки придерживаюсь позици Игоря тут: лучше выполнять то что хочет пользователь, а
> если он носастый, ну значит сам такой.

Как раз все нормальные места от циклов закрыты давно и прочно, 
перечитай код.

И, собственно, с чего начинался разговор: подобные недоработки в 
именованных location'ах есть.  И прежде чем расширять поддержку - 
хорошо бы их по возможности вычистить.

> > > Вот последние две вещи, лично мне, удобны. Т.е. когда надо чистить я делаю return +
> > > error_page, когда не надо чистить rewrite.
> > 
> > Внутренние редиректы - чистят, переходы в именованные location'ы - 
> > не чистят.  От метода вызова это не зависит.
> > 
> > И уже есть модули где это выходит боком.  Ибо они подбирают старый 
> > контекст и пытаются с ним работать, впадая в бесконечный цикл.  
> > Понятно что это в первую очередь проблема данных модулей, но 
> > нифига не понятно интуитивно.
> > 
> 
> Давай честно, nginx нифига не понятен интуитивно. Какие-то общие вещи, да, вполне. В
> деталях же творить полная вакханалия и равзрат.

Да нет на самом деле.  Большая часть вещей - очень даже понятна и 
логична.  Но есть нюансы. (c)

> > Тем более что семантика у переходов в named location'ы совсем 
> > даже не предполагает отличий в этом месте.  С другой стороны, 
> > чистить нельзя - ибо, как я уже писал, server rewrite phase по 
> > очевидным причинам не выполняется, и контексты поставленные 
> > там нужно сохранять.
> > 
> 
> Не знаю, слишком тонкий момент. Вообще момент с internal 
> redirect очень тонкий. Но раз есть двоякость, то увы.

С internal redirect'ами как раз всё проще пареной репы.  Поменять 
uri, всё очистить и выполнить заново.  А вот с именованными 
location'ами действительно всё не просто.  И я пока не понимаю как 
их логично вписать в ту же схему работы (или как переделать 
схему, чтобы они логично вписались).

Maxim Dounin



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