Как на 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