Puede que nunca hayas pensado mucho en qué es Auth Basic, pero seguro que te lo has encontrado al entrar en la configuración de tu router. Se llama así al mecanismo de autorización por nombre de usuario y contraseña a nivel de servidor web. Dicha autorización está soportada tanto en Apache como en Nginx. En esta instrucción sugerimos considerar la cuestión de cómo configurar Auth Basic para una ruta específica o un sitio específico.
Este es el aspecto de la ventana de autorización de Auth Basic:
Ahora debería entender de qué va esta instrucción. Es posible configurar la autorización para una URL específica, para todo el sitio o para todos los sitios. Pero lo primero que hay que hacer es crear un archivo con una lista de usuarios y contraseñas. Para ello utilizaremos la utilidad htpasswd. La sintaxis del comando es la siguiente:
$ sudo htpasswd -c /path/to/file username
En este caso, la opción -c se utiliza para crear un nuevo fichero, no es necesario utilizarla para editar ficheros previamente creados. Por ejemplo:
$ sudo htpasswd -c /etc/nginx/auth.basic admin
El programa hará una doble petición de contraseña. Por motivos de seguridad, la contraseña no se muestra, pero se introduce. Una vez que haya creado un archivo de este tipo, puede ir directamente a la configuración de Nginx.
Para proteger con contraseña todos los recursos, es necesario añadir una directiva a la sección http
del archivo /etc/nginx/nginx.conf
:
auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/auth.basic;
Para proteger una dirección de página específica (URL), es necesario agregar una directiva al bloque de ubicación correspondiente. Podría ser /wp-admin/admin-ajax.php
:
location /wp-admin/admin-ajax.php {
auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/auth.basic;
}
Si el sitio está en WordPress, es mejor colocar la ubicación
en location/
. Todas las reglas descritas anteriormente funcionarán, y además se proporciona protección. Si necesita permitir el acceso para una ubicación
específica, la directiva se verá como auth_basic "off"
:
location /wp-admin/admin-ajax.php {
auth_basic "off";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9002;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
Será necesario añadir el procesamiento PHP al bloque de ubicación
, de lo contrario se pedirá al usuario que descargue el script al que está accediendo.
Por lo tanto, configurar el acceso en Nginx no es demasiado difícil. Basta con configurar correctamente el bloque de ubicación.