Синтаксис в map в Nginx

D
На сайте с 28.06.2008
Offline
1104
1670

Это работает

map $status:$http_user_agent $good_useragent {
default 0;
~*503:.*(yandexaccessibilitybot|yandexdirect|yandeximages|yahoo|mediapartners-google|yandexbot|googlebot|msnbot|bingbot|mail).* 1;
}

а вот это уже не работает. (другое условие - наличие подходящих под него вариантов 100%-но есть)

map $whitelist:$http_user_agent $zakos_pod_good_bot {
default 0;
0:.*(yandexaccessibilitybot|yandexdirect|yandeximages|yahoo|mediapartners-google|yandexbot|googlebot|msnbot|bingbot|mail).* 1;
}

и так не работает

map "$whitelist:$http_user_agent" $zakos_pod_good_bot {
default 0;
"0:.*(yandexaccessibilitybot|yandexdirect|yandeximages|yahoo|mediapartners-google|yandexbot|googlebot|msnbot|bingbot|mail).*" 1;
}

и так не работает

map "$whitelist:$http_user_agent" $zakos_pod_good_bot {
default 0;
"0:~*yahoo" 1;
"0:~*yandex" 1;
"0:~*google" 1;
"0:~*msnbot" 1;
"0:~*bingbot" 1;
"0:~*mail" 1;
}

Вопрос - где ошибаюсь?

J
На сайте с 20.02.2014
Offline
120
jkm
#1

Перед регулярным выражением ставится символ “~”, если при сравнении следует учитывать регистр символов, то ставятся символы “~*”.

D
На сайте с 28.06.2008
Offline
1104
#2

Так тоже не сработало

map "$whitelist:$http_user_agent" $zakos_pod_good_bot {
default 0;
"0:~yahoo" 1;
"0:~yandex" 1;
"0:~google" 1;
"0:~msnbot" 1;
"0:~bingbot" 1;
"0:~mail" 1;
}

Запрос с другого ВПС в Германии дал ответ 200, а должен 503

wget --user-agent="Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" https://site.ru

P.S.

if ($zakos_pod_good_bot) {
return 503;
}

где нужно прописано...

baas
На сайте с 17.09.2012
Offline
169
#3
Dram:
Так тоже не сработало



Запрос с другого ВПС в Германии дал ответ 200, а должен 503



P.S.

где нужно прописано...

Не совсем понимаю, что вы хотите сделать.

Вы хотите заблокировать по названию?

"0:~*yahoo" 1;

"0:~*yandex" 1;
"0:~*google" 1;
"0:~*msnbot" 1;
"0:~*bingbot" 1;
"0:~*mail" 1;
Настройка BSD систем. (https://www.fryaha.ru) Знание сила, незнание Рабочая сила!
D
На сайте с 28.06.2008
Offline
1104
#4

У меня есть список подсетей реальный поисковых ботов. Он уже хорошо обкатан и используется почти 2 года - переменная $whitelist

Я хочу создать условие если запрос НЕ ИЗ подсетей поисковиков, но при этом по юзерагенту максируется под поискового бота - то отшить его 503 ошибкой.

Итого проверям:

$whitelist = 0 (подсеть НЕ поисковыйх ботов)

$http_user_agent = поискового бота.

---------- Добавлено 26.06.2018 в 08:59 ----------

К примеру этот map отлично работает и есть еще много других услугих условий, которые нормально работают.

map "$whitelist:$server_protocol" $log2 {
default 0;
"0:HTTP/2.0" 1;
}
J
На сайте с 20.02.2014
Offline
120
jkm
#5
Dram:
Так тоже не сработало

Ну там же два разных режима работы: обычное строковое значение или регулярное выражение.

Т.е. если условие начинается с "~*", то всё что следом это регулярное выражение иначе это условие с обычным строковым значением.

map "$whitelist:$http_user_agent" $zakos_pod_good_bot {

default 0;
~*^0:.*yahoo 1;
~*^0:.*yandex 1;
~*^0:.*google 1;
~*^0:.*msnbot 1;
~*^0:.*bingbot 1;
~*^0:.*mail 1;
}


map $whitelist:$http_user_agent $zakos_pod_good_bot {
default 0;
~*^0:.*(yandexaccessibilitybot|yandexdirect|yandeximages|yahoo|mediapartners-google|yandexbot|googlebot|msnbot|bingbot|mail).* 1;
}
D
На сайте с 28.06.2008
Offline
1104
#6

jkm, спасибо!!!

это сработало!

map $whitelist:$http_user_agent $zakos_pod_good_bot {
default 0;
~*0:.*(yandexaccessibilitybot|yandexdirect|yandeximages|yahoo|mediapartners-google|yandexbot|googlebot|msnbot|bingbot|mail).* 1;
}
D
На сайте с 28.06.2008
Offline
1104
#7

jkm, чем отличается

~*^0: от ~*0: ? У меня и без ^ работает.

J
На сайте с 20.02.2014
Offline
120
jkm
#8

Метасимвол ^ соответствует началу строки.

D
На сайте с 28.06.2008
Offline
1104
#9

Кому интересно - вот топ 10 хитроботов, маскирующихся под ботов Гугла и Яндекса, но таковыми не являющимеся. (слева кол-во запросов за 4 дня)


407-----78.84.201.122
374-----176.9.137.118
214-----13.77.169.115
19-----185.89.101.58
17-----91.243.93.227
17-----91.243.93.176
17-----91.216.3.51
17-----79.133.106.141
17-----5.101.218.25
17-----5.101.218.120

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий