Proteger un sitio en desarrollo con htpasswd
Hay mucho tutorial de como hacerlo pero esta solución es la menos invasiva a mi parecer.
Mi situación es la siguiente: Tengo varios site en el servidor de desarrollo quiero que todos tengan que pasar por un login para que no acceda todo Dios. Tampoco quiero configurar el htpasswd en el .htaccess del site que estoy desarrollando porque tengo que andar evitándolo en GIT. La solución es que el htpasswd esté configurado a nivel vhost y las claves almacenadas en un directorio común para todas ellas.
1: Crea un directorio en el que almacenar todas las claves y créalas
Por ejemplo yo he creado un directorio en /home/deploy/htpasswd y se la he cedido a www-data con chown www-data. /home/deploy/htpasswd -R
Ahora que tengo un directorio donde meter las claves de los sites ya puedo crear un usuario y clave para cada site. por ejemplo:
1 |
htpasswd -c /home/deploy/htpasswd/.foo_site usuario_para_foo_site |
.foo_site no es mas que el nombre del archivo que almacena la clave. se puede llamar como te de la gana.
usuario_para_foo_site es el nombre de usuario que voy a crear para este site. La clave te la pide cuando des enter.
Los pasos anteriores los podes hacer para todos los sites que quieras tener bajo llave. Pero todavía no usando estas claves. Vamos a solucionarlo:
2: asignar claves a cada site
Ya tenemos las claves almacenadas en archivos individuales bajo /home/deploy/htpasswd. Solo nos queda ir a cada uno de los vhost y decirle que usen estos archivos:
Este es un ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<VirtualHost *:80> DocumentRoot "/var/www/foo-site/" ServerName foo-site.front.id <Directory "/var/www/foo-site/"> Options All AllowOverride All Allow from All AuthUserFile /home/deploy/htpasswd/.foo_site AuthName "Identificate" AuthType Basic Require valid-user </Directory> </VirtualHost> |
Del vhost anterior lo importante es esto.
1 2 3 4 |
AuthUserFile /home/deploy/htpasswd/.foo_site AuthName "Identificate" AuthType Basic Require valid-user |
Y eso es todo. reinician apache y de ahora en mas se les va a pedir el usuario y clave que hayan creado en /home/deploy/htpasswd/.foo_site
Resumiendo: Esta me parece una solución ideal para no andar tocando el código del sitio que estas desarrollando, por otro lado el tener todas las claves en un mismo lugar hace mas fácil mantenerlas.
Ahora si, chau!