Lo primero que debemos hacer es ver si el módulo está cargado en la configuración, para ello abrimos el fichero de configuración y revisamos la sección server.modules, donde debería mod_auth, sino lo añadís:
/etc/lighttpd/lighttpd.conf
server.modules = ( "mod_access", "mod_accesslog", "mod_fastcgi", "mod_rewrite", "mod_auth", "mod_cgi" )
Después tenemos que configurar las tres directivas disponibles para la autenticación, el tipo de autenticación, el fichero en el que se almacenarán los datos de usuarios y claves y el nivel de debug:
auth.backend = "htpasswd" auth.backend.htpasswd.userfile = "/home/miwebsite/.lighttpdpasswd" auth.debug = 0
Mediante auth.backend podemos especificar el tipo de autenticación, puede ser en texto plano (plain) o mediante htpasswd o LDAP. Elegimos htpasswd para tener la clave encriptada. Luego el fichero donde se almacenan las claves lo especificamos también (auth.backend.htpasswd.userfile). Finalmente el debug para verificar el funcionamiento, con 0 queda desactivado, con 1 vuelca a los logs cuando la autenticación es correcta y con 2 vuelca todo (access.log y error.log).
Ahora creamos fuera de la carpeta pública del sitio web el fichero con los usuarios y sus claves encriptadas por htpasswd:
# vim /home/miwebsite/.lighttpdpasswd
foo:soAb7vp63UATv7uaA2
chown lighttpd /home/miwebsite/.lighttpdpasswd && chmod 0600 .lighttpdpassword
Finalmente sólo nos queda seleccionar que directorio o website queremos proteger. Para ello buscaremos la sección $HTTP[«host»] que contenga la web/directorio a proteger:
En negrita lo relacionado con la autenticación:
$HTTP["host"] =~ "test.com" { server.document-root = "/home/test-com/" accesslog.filename = "/var/log/lighttpd/test-access.log" auth.require = ( "/carpeta-protegida/" => ( "method" => "basic", "realm" => "Password protected area", "require" => "user=foo" ) ) }
Y ya podemos reiniciar lighttpd para activar los cambios. En este caso la carpeta test.com/carpeta-protegida/ quedará protegida y únicamente el usuario foo podrá acceder.
# /etc/init.d/lighttpd restart