Назад | Перейти на главную страницу

Пользовательский агент nginx deny вызывает ошибку, если не заключен в кавычки

Я пытаюсь запретить некоторым пользовательским агентам, которые я постоянно вижу, проверяя мои nginx веб сервер.

Если это у меня есть .conf файл

 ## Block http user agent - morpheus fucking scanner ##
    if ($http_user_agent ~* (morfeus fucking scanner|ZmEu)) {
       return 403;
    }

При запуске сервисов я получаю следующую ошибку:

nginx: [emerg] invalid condition "$http_user_agent" in /etc/nginx/sites-enabled/siteXXX:19
nginx: configuration file /etc/nginx/nginx.conf test failed

Если я заключу его в кавычки, он начнется, но не будет отрицать, как я ожидал.

 ## Block http user agent - morpheus fucking scanner ##
    if ($http_user_agent ~* "(morfeus fucking scanner|ZmEu)") {
       return 403;
    }

Любые идеи? Я ищу отрицательный пользовательский агент без учета регистра.

Просто снимите скобки и добавьте кавычки:

if ($http_user_agent ~* "morfeus fucking scanner|ZmEu") {
    return 403;
}

с какой строкой вы пытаетесь сопоставить?

Регулярное выражение должно быть в кавычках, но если вы хотите сопоставить специальный символ регулярного выражения (,), | - вам нужно избежать этого с помощью \

попробуй это: $http_user_agent ~ "(morfeus fucking scanner)|ZmEu"