Com protegir amb contrasenya els directoris web a Nginx


Els gestors de projectes web sovint necessiten protegir la seva feina d'una manera o altra. Sovint, la gent pregunta com protegir amb contrasenya el seu lloc web mentre encara està en desenvolupament.

En aquest tutorial, us mostrarem una tècnica senzilla però eficaç per com protegir un directori web amb contrasenya quan executeu Nginx com a servidor web.

En cas que utilitzeu el servidor web Apache, podeu consultar la nostra guia per protegir amb contrasenya un directori web:

  1. Protecció de directoris web amb contrasenya a Apache

Per completar els passos d'aquest tutorial, haureu de tenir:

  • Servidor web Nginx instal·lat
  • Accés root al servidor

Pas 1: creeu usuari i contrasenya

1. Per protegir amb contrasenya el nostre directori web, haurem de crear el fitxer que contindrà el nostre nom d'usuari i contrasenya xifrats.

Quan utilitzeu Apache, podeu utilitzar la utilitat htpasswd. Si teniu aquesta utilitat instal·lada al vostre sistema, podeu utilitzar aquesta ordre per generar el fitxer de contrasenya:

# htpasswd -c /path/to/file/.htpasswd username

Quan executeu aquesta ordre, se us demanarà que establiu una contrasenya per a l'usuari anterior i després es crearà el fitxer .htpasswd al directori especificat.

2. Si no teniu aquesta eina instal·lada, podeu crear el fitxer .htpasswd manualment. El fitxer ha de tenir la sintaxi següent:

username:encrypted-password:comment

El nom d'usuari que utilitzaràs depèn de tu, tria el que vulguis.

La part més important és la manera com generareu la contrasenya per a aquest usuari.

Pas 2: genereu la contrasenya xifrada

3. Per generar la contrasenya, utilitza la funció cripta integrada de Perl.

Aquí teniu un exemple d'aquesta comanda:

# perl -le 'print crypt("your-password", "salt-hash")'

Un exemple de la vida real:

# perl -le 'print crypt("#12Dfsaa$fa", "1xzcq")'

Ara obriu un fitxer i poseu el vostre nom d'usuari i la cadena generada, separats amb punt i coma.

Aquí és com:

# vi /home/tecmint/.htpasswd

Posa el teu nom d'usuari i contrasenya. En el meu cas es veu així:

tecmint:1xV2Rdw7Q6MK.

Deseu el fitxer prement Esc seguit de :wq.

Pas 3: actualitzeu la configuració de Nginx

4. Ara obriu i editeu el fitxer de configuració de Nginx associat al lloc on esteu treballant. En el nostre cas utilitzarem el fitxer predeterminat a:

# vi /etc/nginx/conf.d/default.conf       [For CentOS based systems]
OR
# vi /etc/nginx/nginx.conf                [For CentOS based systems]


# vi /etc/nginx/sites-enabled/default     [For Debian based systems]

En el nostre exemple, protegirem amb contrasenya l'arrel del directori per a nginx, que és: /usr/share/nginx/html.

5. Ara afegiu la secció de dues línies següents sota el camí que voleu protegir.

auth_basic "Administrator Login";
auth_basic_user_file /home/tecmint/.htpasswd;

Ara deseu el fitxer i reinicieu Nginx amb:

# systemctl restart nginx
OR
# service nginx restart

6. Ara copieu/enganxeu aquesta adreça IP al vostre navegador i se us demanarà la contrasenya:

Això és! El vostre directori web principal ara està protegit. Quan vulgueu eliminar la protecció amb contrasenya del lloc, només heu d'eliminar les dues línies que acabeu d'afegir al fitxer .htpasswd o utilitzeu l'ordre següent per eliminar l'usuari afegit d'un fitxer de contrasenya.

# htpasswd -D /path/to/file/.htpasswd username