$args - сделать нормализованным

S.A.N nginx-forum at nginx.us
Tue Jun 9 13:10:30 UTC 2015


Есть нормализованная переменная $uri, но нет нормализованной $args, но она
реально нужна, попробую объяснить.

Наш ключ к кешу и REQUEST_URI к бекенду = $uri$is_args$args, нормализованный
$uri очень удобен, но не нормализованный $args создает проблемы - дубликаты
в кеше и флуд на бекенд.

Например в наших логах, есть такие запросы: 
/?id=1&id=100
/?id=2&id=100
/?id=3&id=100

Как видите, перемененная id указанна два раза, в РНР будет значения
$_GET["id"] = 100, эти запросы генерят боты, возможно это оплаченный HTTP
флуд, все эти запросы идут на бекенд, отрабатывается бизнес логика по
id=100, кеш пухнет, бекенд нагружен флудом.
Сейчас мы на бекенде нормализуем QUERY_STRING и делаем редирект, но
правильней если бы ответ брался из кеша Nginx, для этого нужно чтобы в ключе
кеша был нормализованный $args.

Кроме ботов, есть ещё много случаев, например разный способ юрл кодировки
/?q=мир+май
/?q=мир%20;май
/?q=мир май // UTF-8

Разная последовательность одинаковых параметров:
/?sort=desc&filter=price
/?filter=price&sort=desc
/?filter=price&sort=desc&

Это все уменьшает эффективность кеша.
Будет очень полезно если $args станет нормализованным, а в $query_string
оставить первоначальное значения, тогда каждый сможет использовать то что
ему нужно.

Спасибо.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,259474,259474#msg-259474



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