2010-01-06 6 views
16

Sto cercando di ottenere l'autenticazione di base che funziona con nginx in Ubuntu Jaunty. In nginx.conf, ho aggiunto queste due righe nel contesto di server:nginx e auth_basic

server { 
    ... 
    auth_basic "Restricted Access"; 
    auth_basic_user_file /etc/nginx/.htpasswd; 
    ... 
} 

Poi ho apache2-utils apt-get get'ed a htpasswd, che ho usato per creare il file htpasswd:

htpasswd -d -c /etc/nginx/.htpasswd joe 

Quando provo ad accedere al sito, la finestra di autenticazione appare come previsto, ma quando inserisco username e password, la finestra di dialogo è appena stata aggiornata. Non sembra gradire la password che sto fornendo. Ho provato a eseguire htpasswd con e senza l'opzione -d, ma ancora senza fortuna. Si è rifiutato di autenticarsi. Qualche idea su cosa sto facendo male?

Qualsiasi aiuto sarebbe apprezzato.

+0

Hai provato il percorso relativo per "auth_basic_user_file"? – Nakul

+0

@KP puoi condividere ciò che ha risolto per te? – codecowboy

risposta

25

cose che vorrei verificare:

  • Permessi su `/ etc/nginx/.htpasswd` - il file può essere letto dal conto corrente nginx? Puoi provare, temporaneamente, usando `chmod 644` per assicurarti che tutti possano leggerlo. Se funziona, puoi ordinare una combinazione appropriata di impostazioni di `chown` e` chmod` in modo che nginx e tu/root possano leggerlo ma altri utenti non possano (per sicurezza).
  • Assicurarsi che `htpasswd` stia generando l'hash nella forma corretta; di solito è composto da 13 caratteri alfanumerici (ad esempio `username: wu.miGq/e3nro`). Il comando PU CAN anche generare hash MD5 che sembrerebbero più simili a `username: $ apr1 $ hzB2K ... $ b87zlCYMKufOxn9ol5QV4 /` questi non funzionano con nginx.
  • Cercare di aumentare l'output di debug di nginx e controllare i log degli errori per gli indizi.
+4

secondo i documenti su http: // nginx.org/it/docs/http/ngx_http_auth_basic_module.html "la variante di Apache dell'algoritmo di password basato su MD5 (apr1)" è ora supportata – kkurian

+0

Anche i doc indicano che la "variante Apache ora è supportata", ho risolto questo problema solo utilizzando un Algoritmo PLAIN. Sfortunatamente, con il log di debug in nginx, il messaggio era ancora "open()" .htpasswd "failed (13: Autorizzazione negata)", che probabilmente è la causa interna del problema (guardando la prospettiva dello sviluppatore di nginx), ma è inutile quando stai cercando di risolvere il problema. –

4

Vecchio thread, ma nessuna risposta e ben referenziato su Google.

se si ottiene questo errore e hanno provato gli altri suggerimenti, verificare le autorizzazioni della cartella genitore del file Htpasswd: l'utente nginx (www-dati per impostazione predefinita) dovrebbe aver letto ed esecuzione permessi (questo l'ha risolto per me).

1

Un altro pasticcio in cui mi sono imbattuto in bash. Invece di immettere la password tramite prompt, ho utilizzato l'opzione -b di htpasswd per immettere la password in linea.

$ htpasswd -nb admin test123$secure 

non riuscivo a capire il motivo per cui la mia ho continuato a correre in errori password di mancata corrispondenza, provando diversi algoritmi di crittografia. Ho verificato con l'arricciatura che ha funzionato:

$ curl -u admin:test123$secure https://example.com 

Infine, il problema stesso reveiled attraverso echo

$ echo test123$secure 
test123 

ho fatto l'errore di usare un segno dolar ($) in bash che è stata interpretata come una variabile vuota, quindi omettendo tutto il resto. Questo può essere evitato facendo cadere l'opzione -b e usando semplicemente il prompt per inserire la password.

+0

I downvoters si preoccupano di commentare? È più un commento che una risposta? –

+0

In aumento, proprio a causa del downvote .. – kev