Proteger directorios con contraseña con Nginx

Generalidades

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.

En los siguientes ejemplos, username sería tu usuario Shell y example.com tu sitio web.

Creando el archivo

  1. Inicia sesión en tu servidor a través de SSH.
  2. Navega al directorio de tu usuario.
  3. Asegúrate de que tienes un directorio /home/username/nginx/example.com. Este no existe por defecto; debes crearlo al correr lo siguiente:
    [server]$ mkdir -p nginx/example.com
    
  4. En este directorio /home/username/nginx/example.com, agrega un archivo llamado basic_auth.conf con lo siguiente:
    location / {
      auth_basic "Restricted";
      auth_basic_user_file /home/username/nginx/example.com/.htpasswd;
    }
    
    • 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:
    [server]$ htpasswd -c /home/username/nginx/example.com/.htpasswd LOGIN
    
    • LOGIN es el nombre de usuario que deseas utilizar para autenticar en el indicador de inicio de sesión.
  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?