Proteger directorios con contraseña con Nginx

 

Generalidades

Lo siguiente explica cómo proteger los directorios con contraseña de un sitio web que se ejecuta en un servidor Nginx.

¿En qué se diferencia de Apache?

En un servidor Apache, es posible proteger con contraseña un directorio usando archivos .htaccess y .htpasswd. Sin embargo, los archivos .htaccess no son compatibles con Nginx. Aún puedes proteger con contraseña tus directorios, pero necesitas usar un archivo basic_auth.conf en su lugar.

Requisitos previos

Este artículo asume que has creado un usuario Shell y que puedes iniciar sesión en tu servidor a través de SSH.

Configurar un directorio protegido con contraseña

Los siguientes pasos explican cómo crear un archivo de configuración y confirmar que está funcionando en un navegador.

  1. Inicia sesión en tu servidor a través de SSH.
  2. Navega al directorio del usuario.
  3. Revisa el artículo Ubicaciones de archivos de configuración de Nginx para crear tu directorio local /nginx/example.com.
  4. En este directorio /home/username/nginx/example.com, crea un archivo llamado basic_auth.conf con lo siguiente:
    location / {
      auth_basic "Restricted";
      auth_basic_user_file /home/username/nginx/example.com/.htpasswd;
    }
    
    • username sería tu usuario Shell y example.com tu sitio web.
    • El parámetro auth_basic es solo el título del mensaje que el usuario ve cuando visita este directorio.
    • El parámetro auth_basic_user_file especifica dónde está el archivo de contraseña. Observa cómo su ruta se establece en el directorio /nginx.
    • En este ejemplo, la directiva location protege con contraseña el dominio entero, ya que está apuntando a /.
    • Si quieres que un subdirectorio esté protegido con contraseña, cambia la directiva location de la siguiente manera:
    location /subdirectory/
    
  5. Corre lo siguiente para crear el archivo .htpasswd. LOGIN es el usuario que vas a usar para autenticar el inicio de sesión. Cámbialo a lo que desees.
    [server]$ htpasswd -c /home/username/nginx/example.com/.htpasswd LOGIN
    
  6. Después de escribir ese comando, ingresa una contraseña y confírmala cuando se te solicite:
    New password: 
    Re-type new password: 
    Adding password for user LOGIN
    
  7. Recarga el archivo de configuración de Nginx.
  8. En tu navegador, carga el directorio al que apunta /home/username/nginx/example.com/basic_auth.conf. En el ejemplo arriba, esto sería el directorio raíz de tu dominio ya que la directiva location apunta a /.
  9. Ingresa un usuario/contraseña cuando se te solicite iniciar sesión. En este ejemplo, tu nombre de usuario es LOGIN y la contraseña es la que creó anteriormente.

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?