Welcome! Log In Create A New Profile

Advanced

[njs] как узнать имена всех аргументов переданных в запросе?

Gena Makhomed
June 18, 2019 12:16AM
Здравствуйте, 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 mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

[njs] как узнать имена всех аргументов переданных в запросе?

Gena Makhomed June 18, 2019 12:16AM

Re: [njs] как узнать имена всех аргументов переданных в запросе?

Artem S. Povalyukhin June 18, 2019 12:38AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 312
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready