nginx nega agente do usuário causa erro quando não encapsulado entre aspas

2

Estou tentando negar a alguns agentes de usuário que vejo constantemente investigar meu servidor da Web nginx .

Se eu tiver isso no meu arquivo .conf

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

Eu recebo o seguinte erro ao iniciar serviços:

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

Se eu colocar aspas em torno dele, ele começa, mas não nega como eu esperava.

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

Alguma ideia? Estou à procura de um agente de usuário insensível a maiúsculas negar.

    
por ProfessionalAmateur 14.02.2013 / 04:02

2 respostas

8

Basta soltar os colchetes e adicionar aspas:

if ($http_user_agent ~* "morfeus fucking scanner|ZmEu") {
    return 403;
}
    
por 14.02.2013 / 05:00
1

qual é a string que você está tentando corresponder?

O Regex deve estar entre aspas, mas se você quiser corresponder ao símbolo especial regex (,), | - você precisa escapar com \

tente isto: $http_user_agent ~ "(morfeus fucking scanner)|ZmEu"

    
por 14.02.2013 / 04:38