[njs] как узнать имена всех аргументов переданных в запросе?
Gena Makhomed
gmm на csdoc.com
Вт Июн 18 04:15:25 UTC 2019
Здравствуйте, All!
Есть объект r.args, но он не работает согласно документации:
function redirect(r) {
// ...
r.warn(Object.values(r.args).join(','))
// ...
- в лог пишется пустая строка. Хотя судя по документации,
Object.values(r.args) должен был бы возвращать массив:
https://nginx.org/en/docs/njs/reference.html#core_object
P.S.
Для организации редиректов на канонический урл (для защиты от DoS/DDoS
путем обхода/отравления кеша с помощью рандомных аргументов запроса)
необходимо узнать какие именно аргументы были переданы в запросе.
Каким образом это можно сделать с помощью njs ?
Только вручную в njs парсить переменную $args ?
Применяется это примерно таким образом:
js_include conf.d/example.com.js;
js_set $stopMobileRedirect stopMobileRedirect;
js_set $x_subdomain x_subdomain;
js_set $redirect redirect;
server {
# ...
location / {
if ($redirect) {
add_header Set-Cookie $stopMobileRedirect;
return 302 $redirect;
}
# ...
}
}
--
Best regards,
Gena
Подробная информация о списке рассылки nginx-ru