Generalidades
Lo siguiente explica cómo proteger los directorios con contraseña de un sitio web que se ejecuta en un servidor Nginx.
Cómo esta configuración difiere de un servidor 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.
Los planes DreamPress no admiten cambios en el directorio de configuración local de Nginx, lo que significa que el usuario no puede hacer ajustes de configuración directamente.
Si necesitas personalizar la configuración de Nginx, contacta a soporte para obtener ayuda.
Inicia sesión en tu servidor a través de SSH.
Navega al directorio del usuario.
Revisa el artículo Ubicaciones de archivos de configuración de Nginx para crear tu directorio local /nginx/example.com.
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; }usernamesería tu usuario Shell y example.com tu sitio web.El parámetro
auth_basices solo el título del mensaje que el usuario ve cuando visita este directorio.El parámetro
auth_basic_user_fileespecifica dónde está el archivo de contraseña. Observa cómo su ruta se establece en el directorio /nginx.
En este ejemplo, la directiva
locationprotege con contraseña el dominio entero, ya que está apuntando a/.Si quieres que un subdirectorio esté protegido con contraseña, cambia la directiva
locationde la siguiente manera:
location /subdirectory/
Corre lo siguiente para crear el archivo .htpasswd.
LOGINes 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
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
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
locationapunta a /.Ingresa un usuario/contraseña cuando se te solicite iniciar sesión. En este ejemplo, tu nombre de usuario es
LOGINy la contraseña es la que creó anteriormente.