Как на nginx быстро наличие аутентификации проверять?

Kostya Alexandrov koticka at mail.ru
Thu Mar 20 23:53:16 MSK 2008


Мы с Вами несколько с разных сторон смотрим, Ваш случай только ддос, я 
же говорю о авторизации на уровне бекенда.

Куку неплохо бы проверить на валидность, при условии конечно что она 
есть, например если бекенд контролирует время жизни или
не активности сессии, я думаю не очень хорошаяя идея контролировать это 
на стороне фронтенда, не общий случай. Кроме того, если
держать как информацию "колбаса"+customer ip, это отсеит отснифанные 
запросы с "чужими" куками. Формирование куки я бы доверил бекенду. 
Задача фронтенда проверить что кука есть, что она валидная (есть в кеше 
и с "правильного" адреса) и если все так то передать
бекенду. Бекенд в этом случае может быть уверен что если ему что то 
пришло, то эта сессия есть, живая и правильная.

На счет не поддерживающих куки - у меня реализовано как может быть кука 
с "колбасой", может быть параметр сервлета вида сессия=колбаса.

Alex Vorona wrote:
> Kostya Alexandrov пишет:
>> Это близкие задачи, зачем разделять,
> задачи близкие, только хитов в эти задачи ожидается разное количество 
> в контексте ддоса.
>  nginx хороший фронтенд, если просто
>> сможет обращаться за кукой в  "хранилище" то уже здорово(!)
> зачем ему обращаться за кукой куда-то? Куку он видит(или не видит, 
> если её нет) в запросе клиента. Если кука есть, nginx зная ключ и видя 
> ИП, с которого пришёл запрос, генерит хэш и сравнивает его с кукой.. 
> По результатам сравнения запрос клиента отрабатывает или клиент 
> получает 40x. Нет куки - выдавать мелкий хтмл с текстом "введите в 
> строке браузера" и картинку с url, либо js/html-редирект, либо 40x, 
> либо ... :)
>> А то что у меня снизилась нагрузка на бекенде разве это плохо? можно 
>> считать его тяжелым :)
>>
>> Если еще привязать куку к бекенду в апстриме, то вааще будет очень 
>> круто. Это фактически раскидывание сессий по нодам на которых прошла 
>> авторизация. По ip так можно делать, но это несколько не то.
>>
> да, как вариант, такое возможно. Только и о неподдерживающих куки 
> клиентах в этом случае надо как-то подумать
>> Alex Vorona wrote:
>>> Kostya Alexandrov пишет:
>>>> Совершенно верно, согласно профайлеру (потратил часа два) 
>>>> отключение проверки авторизации снижает нагрузку с 22-23 до 18-19 %
>>>> с камней
>>> речь идёт о бэкенде? Я предлагаю использовать модуль nginx как 
>>> фильтр неавторизованных запросов ботов на тяжёлые части сайта(к 
>>> которым должны обращаться только авторизованые клиенты), а не как 
>>> акселератор проверки авторизации для тех, у кого она есть.
>>>> плюс уходит время которое тратится на доступ к синхронизированным 
>>>> контейнерам сессий и т.п, но кроме самой куки надо еще помнить с 
>>>> какого ip она может быть (откуда была авторизация)
>>>>
>>> IP сидит в самой куке хэшем вместе с ключём.
>>>> Alex Vorona wrote:
>>>>> Kostya Alexandrov пишет:
>>>>>  
>>>>>> Помоему разными локейшенами разруливается легко.
>>>>>>
>>>>>> Alex Vorona wrote:
>>>>>>  
>>>>>>> alekciy пишет:
>>>>>>>  
>>>>>>>   
>>>>>>>>> даже в расчищенной квоте есть "Неавторизованные пользователи 
>>>>>>>>> имеют
>>>>>>>>> доступ только к паре статических страничек и скрипту логина." 
>>>>>>>>> Если
>>>>>>>>> вопрос в другом - сформулируйте его, возможно я не так понял 
>>>>>>>>> сабж.
>>>>>>>>> Насколько я понял, основной вопрос это "Как грамотно реализовать
>>>>>>>>> быструю
>>>>>>>>> проверку _внутри_ nginx, что пользователь действительно прошел
>>>>>>>>> авторизацию и имеет активную сессию?"
>>>>>>>>>                     
>>>>>>>> ...и видимо как потом максимально эффективно уведомить бэкэнд за
>>>>>>>> nginx-ом
>>>>>>>> о том, что пользователь действительно авторизован?
>>>>>>>>             
>>>>>>> а для чего? Неавторизованные пользователи не пропускаются nginx'ом
>>>>>>> никуда кроме формы логина. Бэкенд после авторизации выставляет 
>>>>>>> куки,
>>>>>>> который является пропуском для остальных страниц на уровне nginx.
>>>>>>>
>>>>>>>
>>>>>>>         
>>>>> в тех локейшнах, которые ждут только авторизованных пользователей и
>>>>> проксируются на бэкенд, надо nginx'ом быстро проверять авторизацию.
>>>>>
>>>>>
>>>>>   
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>
>
>





More information about the nginx-ru mailing list