Nginx блокировка пустых user_agent в map

123
V
На сайте с 28.01.2020
Offline
25
#11
LEOnidUKG #:

Ну вот и косяк, у вас в синтаксисе. А не if запретил nginx. Он всегда будет работать т.к. даже при map вам надо будет проверять переменную через if

Правильный код:

if ($http_user_agent ~* (bot1|bot2|bot3) ) {

return 444;

}

Было так

if ($http_user_agent ~* bot1|bot2|bot3 ) { return 444; }

Успешно работало на старом сервере, переехала на новый и if вызвал ошибку. Хостер сам предложил использовать map.

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#12
Vaily #:

Лучше ВЕСЬ конфиг покажите, куда вы это пытаетесь вставить.

Nginx пишет чисто на человеческом, что ТУДА куда вы вставляете этого делать нельзя.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
V
На сайте с 28.01.2020
Offline
25
#13
LEOnidUKG #:
vhosts-includes
Её как раз и нет.
V
На сайте с 28.01.2020
Offline
25
#14
LEOnidUKG #:

Лучше ВЕСЬ конфиг покажите, куда вы это пытаетесь вставить.

Nginx пишет чисто на человеческом, что ТУДА куда вы вставляете этого делать нельзя.

Сам nginx.conf хостер не изменял, лишь добавил map $http_user_agent $limit_bots в секцию http.
Само же правило if ($limit_bots = 1) { return 444; } вынес в какой-то шаблон, имя/директория файла шаблона мне неизвестны.

И теперь, в /etc/nginx/conf.d/domains/хостнейм.conf правило  if ($limit_bots = 1) { return 444; } выводится автоматом в секции server.
Как-то так получается, хостер ничего не объяснял, а я в этом не сильна.

V
На сайте с 28.01.2020
Offline
25
#15

К сожалению, данная конструкция не работает

    map $http_user_agent $limit_bots {
        default 0;
        ~*(Bot1|Bot2|Bot3) 1;
~^$ 1;     }

А именно, не работает ~^$ 1;
Пустым юзерагентам отдается код 200.

Может всё-таки правильно так ~(^$) 1;


W1
На сайте с 22.01.2021
Offline
306
#16
Vaily #:
данная конструкция не работает

Я дико извиняюсь, но на всякий случай спрошу: а Вы сервер перезагрузили?

Мой форум - https://webinfo.guru –Там я всегда на связи
V
На сайте с 28.01.2020
Offline
25
#17
Перезагрузила nginx, так как именно его нужно перезагружать в данном случае.
V
На сайте с 28.01.2020
Offline
25
#18

Пробовала так:
map $http_user_agent $limit_bots {

       default 0;
        ~*(Bot1|Bot2|Bot3) 1;
     ~^$ 1;
    }

и так:
map $http_user_agent $limit_bots {

       default 0;
        ~*(Bot1|Bot2|Bot3) 1;
     ~(^$) 1;
    }

и вот так:
map $http_user_agent $limit_bots {
        default 0;
        ~*( ^$ |Bot1|Bot2|Bot3) 1;
    }

Во всех вариантах ответ 200 для пустого юзерагента.

W1
На сайте с 22.01.2021
Offline
306
#19
Vaily #:

Пробовала так:
и так:
и вот так:

Это равнозначные варианты, как Вы уже наверное догадались. Кроме последнего варианта, он неправильный, потому что там пробел.

Vaily #:

В всех вариантах ответ 200 для пустого юзерагента.

А может быть, он всё же не пустой в Вашем тесте?

L
На сайте с 10.02.2015
Offline
249
#20
Попробуйте "" 1 в map
123

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