O nginx auth_basic funciona em HTTPS?

O nginx auth_basic funciona em HTTPS?

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

/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 o URL https://server1.example.com/secure/, recebo uma página de erro "404: Not Found".

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, consegui configurar diretórios protegidos por senha para um host virtual HTTP normal sem problemas.

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

Responder1

Possivelmente é um problema de caminho para auth_basic_user_file, onde seu caminho absoluto está confundindo o nginx:

http://wiki.nginx.org/HttpAuthBasicModule#auth_basic_user_file

Desde a versão 0.6.7, o caminho do nome do arquivo é relativo ao diretório do arquivo de configuração nginx nginx.conf, mas não ao diretório de prefixo nginx.

Não tenho certeza de como você faz isso funcionar 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 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 esperado, ele deverá informá-lo nesse momento.

informação relacionada