Autenticación en Nginx

Vamos a utilizar openssl y comprobamos si está instalada:

dpkg -l | grep openssl
  

Ahora creamos un archivo oculto .htpasswd en /etc/nginx:

sudo sh -c  "echo -n 'abhijeet:' >> /etc/nginx/.htpasswd"
  

Crea dos usuarios, uno con tu nombre y otro con tu apellido. Comprueba que el usuario y la contraseña aparezcan cifrados en el fichero:

cat /etc/nginx/.htpasswd
  

Configurando el servidor Nginx para usar autenticación básica

Editamos el archivo de server block:

sudo nano /etc/nginx/sites-available/nom_web
  

Y editamos dentro de location / {...}:

server {
      listen 80;
      listen [::]:80;

      root /var/www/abhijeet/html/perfect-learn;
      index index.html index.htm index.nginx-debian.html;
      server_name tasca;
      location / {
        auth_basic "Àrea restringida";
        auth_basic_user_file /etc/nginx/.htpasswd;
        try_files $uri $uri/ =404;
      }
  }
  

Y reiniciamos el servidor:

sudo systemctl restart nginx
  

Combinación de la autenticación básica con restricciones de IP

Dentro de server block añadiremos:

server {
      ...
      location / {
        deny 198.192.1.10;
        allow 192.168.1.1/24,
        allow 127.0.0.1;
        deny all;
      }
  }
  

Combinar IP y la autenticación HTTP:

server {
      ...
      location / {
        satisfy all;

        deny 198.192.1.10;
        allow 192.168.1.1/24,
        allow 127.0.0.1;
        deny all;

        auth_basic              "Administrator's area"
        auth_basic_user_file    conf/htpasswd;
      }
  }