2013-05-12 17 views
5

Sto provando a proteggere con password una directory sul mio sito Nginx che contiene cose come phpMyAdmin, MemcacheMyAdmin e altre utilità di amministrazione.403 vietato - Nginx - utilizzando le credenziali corrette

Questa directory viene inserito nella directory principale del mio sito all'indirizzo:

domain.com/control/ 

Il percorso assoluto sul mio server e ':

/home/deployer/sites/domain.com/control/ 

ho creato un file .htpasswd nella directory utilizzando questo comando:

Il file è presente, di proprietà dell'utente "root" ed è 0644 autorizzazioni.

Nel file .conf per questo dominio in Nginx, utilizzo il seguente blocco di posizione per richiedere l'autenticazione.

location /control { 
    auth_basic   "Restricted Area: Control"; 
    auth_basic_user_file /home/deployer/sites/domain.com/control/.htpasswd; 
    } 

Quando si accede alla directory protetta da password, sono richiesto un nome utente e una password. Inserisco le credenziali create in precedenza e quindi mi viene presentata una pagina di errore 403 vietata.

log di accesso mi dimostrano che sto colpendo il prompt di login e poi login come utente "admin":

64.123.456.225 - - [12/May/2013:17:30:48 +0000] "GET /control HTTP/1.1" 401 597 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31" 
64.123.456.225 - admin [12/May/2013:17:30:48 +0000] "GET /control HTTP/1.1" 301 185 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31" 
64.123.456.225 - admin [12/May/2013:17:30:59 +0000] "GET /control/memcache/ HTTP/1.1" 403 199 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31" 

I registri degli errori mostrano la seguente:

2013/05/12 17:31:01 [error] 30462#0: *1 directory index of "/home/deployer/sites/domain.com/control/memcache/" is forbidden, client: 64.123.456.225, server: domain.com, request: "GET /control/memcache/ HTTP/1.1", host: "domain.com" 
2013/05/12 17:31:09 [error] 30462#0: *1 directory index of "/home/deployer/sites/domain.com/control/memcache/" is forbidden, client: 64.123.456.225, server: domain.com, request: "GET /control/memcache/ HTTP/1.1", host: "domain.com" 

Se io rimuovi il blocco Auth per Nginx .conf per quel sito, quindi posso accedere alla pagina normalmente.

Grazie per qualsiasi aiuto!

risposta

4

Questo può essere causato da autorizzazioni o da una direttiva di indice di directory inesistente o non valida.

Autorizzazioni: Se www è di proprietà di nginx ma/var è di proprietà di root, quindi www erediterà le autorizzazioni di var, negando così l'accesso.

Indice Direttiva: Se l'indice dell'indice è impostato su un file non disponibile, allora nginx genererà un 403. In questo caso, suppongo che per default sia index.htm anziché index.php.

Meglio di fortuna!

+0

Questo è corretto. Ho aggiunto "index index.php;" al blocco di posizione e carica. Molto apprezzato. –

+0

Per avere un'altra risposta con jgpatrick3, l'indice può anche essere un problema se si sta tentando di utilizzare autoindex, poiché l'autenticazione sovrascrive 'autoindex on' da una direttiva esterna - quindi è necessario" manualmente "riabilitare' autoindex on' nella zona autenticata. – Dubslow

0

l'errore non è l'autenticazione, ma la directory vostro stanno cercando di accedere e il suo contenuto:

/home/deployer/sites/domain.com/control/memcache/ 

Quando il web server elabora la richiesta di verifica per i file di indice conosciuti come index.html, index .php e così via. Se non trova uno di questi, interpreta la richiesta come un tentativo di elencare tutti i file nella directory specificata. Questo sembra essere vietato nella configurazione di nginx (che è buona). Messaggio:

directory index of [...] is forbidden 

Perciò credo che la directory

/home/deployer/sites/domain.com/control/memcache/ 

è vuota o non contiene un file di indice che nginx riconosce.
Se si richiede un file specifico o si crea un file index.html, l'errore 403 dovrebbe essere eliminato.

7

Anche se questa domanda ha la sua risposta accettata, voglio ancora mettere un altro caso con cui ho problemi qui così altre persone non avrebbero bisogno di lottare come me.

ho avuto 403 con le credenziali corrette anche, il file di indice non è il caso, il file esistenza non è il caso né e la configurazione è stata questa:

auth_basic "some message"; 
auth_basic_user_file /etc/nginx/.htpasswd; 

Il problema qui è che /etc/nginx/.htpasswd è un assoluto percorso che punta effettivamente all'interno della stessa directory con nginx.conf. In qualche modo ha confuso lo nginx per cercare il file. (Dicendo in qualche modo, non capisco perfettamente come non sia stato possibile fare nginx perché è abbastanza ovvio che il percorso è assoluto e basta leggerlo, quindi se qualcuno ha una spiegazione migliore, per favore condividi i commenti).

Se cambio a:

auth_basic_user_file .htpasswd; 

ha funzionato perché nginx aspettati di trovare il file nella stessa directory con nginx.conf.

Anche se cambio a:

auth_basic_user_file /home/user/.htpasswd; #and move the file to /home/user too 

Ha funzionato anche perché penso che il percorso non confondere nginx.

+0

Sì, penso che questa dovrebbe essere la risposta corretta. Questa è l'unica risposta che mi ha aiutato. – m4l490n

0

ho descritto i passi con la soluzione di "Come impostare autenticazione" a nginx usando .htpasswd HERE

Si prega di verificare la data link qui sopra, sarei felice se aiuta qualcuno in qualche modo, perché ho lottato duramente per rendere questa cosa funziona.

Grazie.

3

Sono arrivato perché ho avuto un problema simile. Avevo impostato la directory di livello superiore in "autoindex on;". Ho aggiunto la protezione con password per una sottodirectory con una dichiarazione separata per ("/ sottodirectory") senza ripetere "autoindex on;" Questo nginx rimasto alla ricerca di un file indice, e poiché non c'era nessuno, ho visto "vietato".

Una volta aggiunto "autoindex on;" al setup per "/ sottodirectory". l'elenco della directory è apparso durante la navigazione nella sottodirectory.

Problemi correlati