Este artículo explica cómo implementar autenticación Basic con Nginx en Debian/Devuan o Ubuntu.

Supongamos que tenemos un servidor Web Nginx en funcionamiento, y deseamos restringir el acceso con usuario y contraseña a cierto sitio utilizando el mecanismo de autenticación básica del protocolo HTTP (HTTP Basic Authentication). Esto se puede implementar de forma muy simple, similar a la configuración necesaria para un servidor Apache.

El primer paso consiste en definir la autenticación Basic en el archivo de configuración del servidor Nginx para el sitio en cuestión:

root@debian:/usr/local/nginx/conf# nano nginx.conf

Las directivas auth_basic y auth_basic_user_file habilitan y definen la ubicación de la base de datos de usuarios del mecanismo de autenticación Basic, respectivamente:


    server {
        listen       80;
        server_name  www.linuxito.com;


       [...]


       ## Autenticacion Basic
       auth_basic               "Acceso restringido";
       auth_basic_user_file     .htpasswd;

Es posible configurar y utilizar las directivas de autenticación Basic en los contextos http, server (tal como se observa en este ejemplo), location y limit_except.

Luego es necesario definir el/los usuarios que tendrán permiso de acceso. Para ello es posible instalar el utilitario htpasswd, provisto por el paquete apache2-utils en Debian y derivados:

root@debian:/usr/local/nginx/conf# apt-get install apache2-utils

No es necesario instalar todo Apache para poder utilizar esta herramienta, sólo el paquete apache2-utils. Tener cuidado de que APT no nos recomiende instalar muchos más paquetes de Apache. Es posible evitar que APT instale dependencias innecesarias configurándolo correctamente.

Crear las credenciales (usuario:contraseña) para el usuario "admin" con el siguiente comando:

root@debian:/usr/local/nginx/conf# htpasswd -c -m .htpasswd admin

Si se desea agregar el usuario "admin" a una base de datos (archivo .htpasswd) existente, o simplemente modificar su contraseña, omitir el parámetro -c.

Luego recargar la configuración de Nginx:

root@debian:/usr/local/nginx/conf# service nginx reload

Ahora, al intentar acceder al sitio, se solicita ingresar usuario y contraseña. De lo contrario retorna error 401 "Authorization Required".

Referencias


Tal vez pueda interesarte


Compartí este artículo