Acesso irrestrito a um único arquivo + FastCGI com basic_auth para todo o domínio no nginx

1

Qual é a maneira mais fácil de restringir o acesso a todos os arquivos, exceto um, em que todo o domínio é veiculado via FastCGI?

O problema que ocorre quando abaixo conf é usado, é que eu não posso acessar / dir (me pedem senha em algum tipo de loop, login correto + senha não está me deixando entrar).

Além disso, a mesma configuração fastCGI é duplicada em location = / unrestricted_file.php e location ~ .php $.

A estrutura é:

server {
    location = /unrestricted_file.php {
       # FastCGI conf...
       break;
    }

    location / {
        root 
        index

        auth_basic "Restricted";
        auth_basic_user_file file;
    }

    location /dir {
        auth_basic "Restricted";
        auth_basic_user_file file;
    }


   location ~ \.php$ {
       auth_basic "Restricted";
       auth_basic_user_file file;
       # fastcgi_pass...
   }
}
    
por piobyz 22.11.2010 / 16:23

1 resposta

3

Você pode desativar a autenticação de um local com auth_basic off . Isso iria encurtar seu arquivo de configuração para algo como isto: (não testado)

server {
    auth_basic "Restricted";
    auth_basic_user_file file;

    location = /unrestricted_file.php {
       auth_basic off;
       # fastcgi_pass...
    }

    location / {
        root 
        index

    }

   location ~ \.php$ {
       # fastcgi_pass...
   }
}

O "loop" vem do fato de que a autenticação para /dir é especificada duas vezes ( / e /dir ). Para ampliar isso, tente alterar o texto para "Restricted path /" e "Restricted path /dir" e seu loop deve mostrar as duas mensagens alternadas.

    
por 22.11.2010 / 17:10