Ativar a autenticação básica em todo o site e desativá-la para subpáginas?

23

Eu tenho uma configuração relativamente direta:

upstream appserver-1 {
    server unix:/var/www/example.com/app/tmp/gunicorn.sock fail_timeout=0;
}
server {
    listen  80;
    server_name  example.com;

    location / {
        proxy_pass http://appserver-1;
        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;

        auth_basic                  "Restricted";
        auth_basic_user_file        /path/to/htpasswd;

    }

    location /api/ {
        auth_basic          off;
    }
}

O objetivo é usar a autenticação básica em todo o site, exceto na subárvore /api/ . Embora funcione em relação à autenticação básica, outras diretivas como proxy_pass também não estão em vigor em /api/ .

É possível desativar apenas a autenticação básica, mantendo as outras diretivas sem copiar e colar tudo?

    
por Benjamin Wohlwend 13.11.2011 / 21:07

3 respostas

23

Que tal dois arquivos?

includes / proxy.conf seria:

proxy_pass http://appserver-1;
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;

E o seu arquivo conf atual:

upstream appserver-1 {
    server unix:/var/www/example.com/app/tmp/gunicorn.sock fail_timeout=0;
}
server {
    listen  80;
    server_name  example.com;

    location / {
        auth_basic                  "Restricted";
        auth_basic_user_file        /path/to/htpasswd;
        include includes/proxy.conf;
    }

    location /api/ {
        auth_basic          off;
        include includes/proxy.conf;
    }
}
    
por 13.11.2011 / 22:13
8

Arquivo de configuração

No Nginx 1.4.4, você precisa de cotações em torno de off para a configuração auth_basic .

location / {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/passwd;
        include /etc/nginx/uwsgi_params;
        uwsgi_pass unix:/tmp/app.sock;
}

location /api {
    auth_basic "off";
        include /etc/nginx/uwsgi_params;
        uwsgi_pass unix:/tmp/app.sock;
}

Criando seu arquivo htpasswd / passwd

Instale apache2-utils , há um aplicativo auxiliar que cria o arquivo htpasswd para você rapidamente. link

htpasswd -c -m <filename> <username>
    
por 12.01.2014 / 09:21
2

Abaixo da configuração funciona para mim por compartilhar uma pasta do meu disco sem qualquer autenticação para pasta de compartilhamento e resto da autenticação necessária do site

server {
        listen       80;
        server_name  localhost;
        root C:\Users\Work\XYZ\;
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
        auth_basic "Administrator Login";
        auth_basic_user_file C:\Users\Work\.htpasswd;

        location /share {
            auth_basic "off";
            allow all; # Allow all to see content 
            alias C:\Users\sg32884\Work\share\;
        }
}
    
por 09.02.2017 / 08:03