Nginx auth apenas para determinado local

1

Estou usando o Nginx como um proxy reverso para um aplicativo da Web WSGI python.

Parece algo assim:

location / {
    #auth_basic     "Administrator Login";
    #auth_basic_user_file  /var/www/static/.htpasswd;
    proxy_pass          http://mywebapp_gunicorn;
    proxy_redirect      off;
    proxy_set_header    Host            $host;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
}

Dentro do aplicativo da web, eu tenho algumas páginas de administração. Gostaria de estar muito protegido, então agora estou usando alguma autenticação dentro do aplicativo da web para protegê-las, gostaria de adicionar também a autenticação Nginx.

Como ativar:

    auth_basic      "Administrator Login";
    auth_basic_user_file  /var/www/static/.htpasswd;

Para o caminho: /managers , mas não para todos os outros URLs.

    
por YardenST 07.05.2013 / 00:18

1 resposta

6

Você só precisa adicionar outro bloco de localização antes ao que tem atualmente, para corresponder ao URL que deseja proteger.

location /managers {
    auth_basic      "Administrator Login";
    auth_basic_user_file  /var/www/static/.htpasswd;
    proxy_pass          http://mywebapp_gunicorn;
    proxy_redirect      off;
    proxy_set_header    Host            $host;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
}

location / {
    proxy_pass          http://mywebapp_gunicorn;
    proxy_redirect      off;
    proxy_set_header    Host            $host;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
}

Por ser anterior ao / , ele será usado preferencialmente para o caminho / gerenciadores.

    
por 07.05.2013 / 03:48