Como posso aplicar a autenticação básica somente se um arquivo htaccess existir?
Se primeiro tentou colocar as diretivas auth_basic
em um bloco if
, mas
isso não é permitido.
Então, tentei redirecionar para um local nomeado, mas enquanto o local com
autenticação básica funciona bem, o redirecionamento (que acontece quando não há
arquivo htaccess) está errando.
Veja como essa configuração se parece:
server {
listen 80;
server_name ~^(?<instance>.+?)\.foo.example.com$;
set $htaccess_user_file /var/htaccess/$instance.foo.example.com.htaccess;
if (!-f $htaccess_user_file) {
rewrite ^ @foo;
}
location / {
auth_basic "Restricted";
auth_basic_user_file $htaccess_user_file;
root /var/www/$instance.foo.example.com;
try_files $uri /index.html =404;
}
location @foo {
root /var/www/$instance.foo.example.com;
try_files $uri /index.html =404;
}
}
E aqui está a mensagem de erro que estou recebendo quando não há arquivo de htaccess:
2013/07/12 08:37:08 [error] 32082#0:
*192 open() "/usr/html@foo" failed (2: No such file or directory),
client: 1.2.3.4, server: ~^(?<instance>.+?)\.foo.example.com$,
request: "GET / HTTP/1.1", host: "bar.foo.example.com"
Eu tenho a sensação de que tem a ver com algumas variáveis sendo sobrescritas pelo nome
localização, mas não tenho certeza.
Por fim, tentei usar alias
no local nomeado, dessa forma, o @foo
não faria parte
do diretório de pesquisa, mas alias
não são permitidos em locais nomeados .... fuuuu