O nginx auth_basic funciona sobre HTTPS?

5

Estou tentando configurar um diretório protegido por senha em um site SSL da seguinte forma:

/ etc / nginx / sites-available / default

server {
    listen 443:
    ssl on;
    ssl_certificate /usr/certs/server.crt;
    ssl_certificate_key /usr/certs/server.key;

    server_name server1.example.com;

    root /var/www/example.com/htdocs/;
    index index.html;

    location /secure/ {
        auth_basic "Restricted";
        auth_basic_user_file /var/www/example.com/.htpasswd;
    }
}

O problema é que quando tento acessar a URL https://server1.example.com/secure/ , recebo uma página de erro "404: não encontrado".

Meu error.log mostra o seguinte erro:

011/11/26 03:09:06 [error] 10913#0: *1 no user/password was provided for basic authentication,
client: 192.168.0.24, server: server1.example.com, request: "GET /secure/ HTTP/1.1",
host: "server1.example.com"

No entanto, eu consegui configurar diretórios protegidos por senha para um host virtual HTTP normal sem problemas.

É um problema com a configuração ou algo mais?

    
por monde_ 26.11.2011 / 10:18

1 resposta

1

Possivelmente é um problema de caminho para auth_basic_user_file, onde seu caminho absoluto é confuso nginx:

link

Since version 0.6.7 the filename path is relative to directory of nginx configuration file nginx.conf, but not to nginx prefix directory.

Não sei ao certo como funciona nos outros casos. A citação da documentação sugere que você deveria ter algo como:

auth_basic_user_file htpasswd/www.example.com

onde você teria o arquivo de senha como "/etc/nginx/htpasswd/www.example.com" se você tiver "/etc/nginx/nginx.conf" como arquivo de configuração do servidor.

Você pode verificar a configuração do nginx executando "sudo nginx -t". Se houver um erro de configuração, ou seja, o arquivo de autenticação não estiver onde espera, ele deverá informar a você nesse ponto.

    
por 26.11.2011 / 14:52