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
- Restricting Access with HTTP Basic Authentication - NGINX Docs
- Module ngx_http_auth_basic_module
man htpasswd