Como colocar na lista branca um agente do usuário para o nginx?

3

Estou tentando descobrir como colocar um agente do usuário na lista de permissões do meu conf nginx. Todos os outros agentes devem receber uma solicitação de senha.

Na minha ingenuidade, tentei colocar o seguinte antes de deny all :

if ($http_user_agent ~* SpecialAgent ) { allow; }

mas me disseram "allow" directive is not allowed here (!).

Como posso fazer isso funcionar?

Uma parte do meu arquivo de configuração:

server {
    server_name site.com;
    root /var/www/site;

    auth_basic            "Restricted";
    auth_basic_user_file  /usr/local/nginx/conf/htpasswd;

    allow 123.456.789.123;
    deny all;

    satisfy any;

    #other stuff...
}

Obrigado por qualquer ajuda.

    
por djb 29.11.2012 / 17:53

2 respostas

0

Você pode usar o módulo auth_request para conseguir isso.

Exemplo em link de acordo com o comentário de @quanta.

    
por 02.12.2012 / 23:20
2

Se precisar apenas de whitelist por user agent (não IP ou outras condições) e não quiser recompilar Nginx apenas para incluir o módulo auth_request, você também pode usar a diretiva map para verificar o user agent e desabilitar condicionalmente a autenticação básica.

map $http_user_agent $auth_type {
    default "Restricted";
    ~^Mozilla "off";
}

server {
    location / {
        auth_basic $auth_type;
    }
}

Isso desativará a autenticação básica dos agentes do usuário do Mozilla.

    
por 25.08.2014 / 23:18

Tags