
He estado intentando configurar un directorio protegido con contraseña en un sitio web SSL de la siguiente manera:
/etc/nginx/sitios-disponibles/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;
}
}
El problema es que cuando intento acceder a la URL https://server1.example.com/secure/
, aparece la página de error "404: No encontrado".
Mi error.log muestra el siguiente error:
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"
Sin embargo, pude configurar directorios protegidos con contraseña para un host virtual HTTP normal sin ningún problema.
¿Es un problema con la configuración o algo más?
Respuesta1
Posiblemente sea un problema de ruta para auth_basic_user_file, donde su ruta absoluta confunde a nginx:
http://wiki.nginx.org/HttpAuthBasicModule#auth_basic_user_file
Desde la versión 0.6.7, la ruta del nombre del archivo es relativa al directorio del archivo de configuración de nginx nginx.conf, pero no al directorio de prefijos de nginx.
No estoy seguro de cómo funciona en los otros casos. La cita de la documentación sugiere que debería tener algo como:
auth_basic_user_file htpasswd/www.example.com
donde tendría el archivo de contraseña como "/etc/nginx/htpasswd/www.example.com" si tiene "/etc/nginx/nginx.conf" como archivo de configuración de su servidor.
Puede verificar la configuración de nginx ejecutando "sudo nginx -t". Si hay un error de configuración, es decir, el archivo de autenticación no está donde se espera que esté, debería informarle en ese momento.