Este tipo de protección se estila cuando tenemos administradores web para algunas secciones que son de alto riesgo, como por ejemplo el administrador de base de datos o el área administrativa de nuestro site.
Creando un Control de Acceso
Crear un control de acceso utilizando HTTP es muy sencillo, para hacerlo debemos tener acceso al servidor donde se encuentra nuestro recurso y tener los permisos correspondientes, luego podemos seguir los siguientes pasos:
1- Vamos a generar el usuario y la contraseña necesaria para acceder al recurso, para ello utilizaremos la librería Apache utils con el comando htpasswd, este comando nos ayuda a crear un archivo donde almacenamos el usuario y la contraseña en un hash que utilizaremos posteriormente, para crear el archivo debemos hacer lo siguiente:
2- Una vez hecho el archivo con el usuario y la contraseña, tenemos que indicarle a Nginx que debe utilizar dicho archivo para proteger la locación que hayamos decidido, esto agregará una interfaz nueva en el front end del site que protegerá nuestros recursos, veamos en la siguiente imagen una porción del archivo de configuración donde aplicamos esto:
Aquí vemos como en el bloque location, le indicamos que para acceder a la raíz del site debe aplicarse la directiva auth_basic y le indicamos la ruta del archivo que hemos generado en el paso 1, ya con ello tendremos nuestra capa de seguridad establecida.
3- Ya que hemos aplicado la configuración correspondiente solo nos queda acceder a nuestro sitio, recordemos el usuario y la clave que hemos colocado al inicio cuando creamos el archivo ya que ahora lo utilizaremos, veamos:
En caso que no recordemos nuestros datos o sea una persona no autorizada al fallar la autenticación el servidor enviará un mensaje 401 de acceso restringido, con ello podremos efectivamente tener una nueva capa de seguridad para nuestro site.
Como vemos Nginx nos permite añadir más seguridad para poder proteger nuestros recursos, este tipo de implementación que vimos es muy utilizada cuando tenemos administradores con interfaces web que no queremos que se vean, por ejemplo un acceso a Cpanel o a phpMyAdmin, que son interfaces web muy delicadas.