Ativei a proteção por senha em um subdomínio usando NGINX e escrevi um pequeno script que permitirá adicionar usuários facilmente. Porém, quando digito a senha, a caixa de diálogo desaparece e aparece imediatamente novamente.
Aqui está o meu script gerador de senha:
#!/bin/bash
if [ -z "$1" ]
then
echo "Username Expected as first param"
elif [ -z "$2" ]
then
echo "Password Expected as second param"
else
htpasswd -b /home/me/.passwords $1 $2
/etc/init.d/nginx reload
fi
Corrida:
./create-password test password
Eu posso ver a seguinte saída:
Adicionando senha para teste de usuário
[ok] Recarregando a configuração do nginx (via systemctl): nginx.service.
Dentro /home/me/.passwords
eu posso ver a seguinte entrada:
test:$apr1$t.LpBHkW$bEBEMK1HRBqAvvkB9cQ.I.
Dentro do meu nginx config ( /etc/nginx/sites-enabled/blah
), tenho o seguinte:
server {
listen 80;
server_name blah.example.com;
auth_basic "Restricted Content";
auth_basic_user_file /home/me/.passwords;
location / {
proxy_pass http://127.0.0.1:6999;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Se eu digitar test
e testing
,
a caixa de diálogo desapareceria e apareceria novamente.
Não estou vendo nenhum erro no NGINX error.log
, access.log
apenas mostra que é basicamente um erro 401, Unauthorized:
___.___.___.___ - test [16/Apr/2016:09:36:38 +0000] "GET / HTTP/1.1" 401 1421 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623
.110 Safari/537.36"
Cancelando o pop-up de senha, vejo o seguinte:
Estou executando Jenkins nesse subdomínio, no momento em que alterei meu nome de usuário e senha http para corresponder ao nome de usuário e senha Jenkins, funcionou.
Jenkins provavelmente também está usando cabeçalhos de autenticação http.