Forse non avete mai pensato a cosa sia l'Auth Basic, ma sicuramente lo avete incontrato quando siete entrati nelle impostazioni del vostro router. Si tratta del meccanismo di autorizzazione tramite nome utente e password a livello di server web. Tale autorizzazione è supportata sia da Apache che da Nginx. In questa istruzione suggeriamo di considerare la questione di come configurare Auth Basic per un percorso specifico o un sito specifico.
Ecco come appare la finestra di autorizzazione di Auth Basic:
Ora si dovrebbe capire il senso di questa istruzione. È possibile configurare l'autorizzazione per un URL specifico, per l'intero sito o per tutti i siti. Ma la prima cosa da fare è creare un file con un elenco di utenti e password. A questo scopo utilizzeremo l'utility htpasswd. La sintassi del comando è la seguente:
$ sudo htpasswd -c /path/to/file username
In questo caso, l'opzione -c viene utilizzata per creare un nuovo file, non è necessario utilizzarla per modificare i file creati in precedenza. Ad esempio:
$ sudo htpasswd -c /etc/nginx/auth.basic admin
Il programma effettua una doppia richiesta di password. Per motivi di sicurezza, la password non viene visualizzata, ma viene inserita. Una volta creato questo file, si può passare direttamente alla configurazione di Nginx.
Per proteggere con password tutte le risorse, è necessario aggiungere una direttiva alla sezione http
del file /etc/nginx/nginx.conf
:
auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/auth.basic;
Per proteggere un indirizzo di pagina specifico (URL), è necessario aggiungere una direttiva al blocco di posizione corrispondente. Potrebbe essere /wp-admin/admin-ajax.php
:
location /wp-admin/admin-ajax.php {
auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/auth.basic;
}
Se il sito è su WordPress, è meglio posizionare il blocco location
in location/
. Tutte le regole descritte in precedenza funzioneranno, con in più una protezione. Se è necessario consentire l'accesso a una posizione
specifica, la direttiva sarà simile a auth_basic "off"
:
location /wp-admin/admin-ajax.php {
auth_basic "off";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9002;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
L'elaborazione PHP dovrà essere aggiunta al blocco della posizione
, altrimenti all'utente verrà richiesto di scaricare lo script a cui sta accedendo.
Pertanto, impostare l'accesso in Nginx non è troppo difficile. È sufficiente configurare correttamente il blocco di localizzazione.