2010-01-06 13 views
16

Estoy tratando de obtener una autenticación básica trabajando con nginx en Ubuntu Jaunty. En nginx.conf, añadí estas dos líneas en el contexto del servidor:nginx y auth_basic

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

Entonces apache2-utils-apt get'ed a conseguir htpasswd, que utilicé para crear el archivo htpasswd:

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

Cuando intento acceder al sitio, el cuadro de diálogo de autenticación aparece como se esperaba, pero cuando introduzco el nombre de usuario y la contraseña, simplemente refresca el cuadro de diálogo. Parece que no me gusta la contraseña que le brindo. Intenté ejecutar htpasswd con y sin la opción -d, pero todavía no tuve suerte. Se negó a autenticarse. ¿Alguna idea de lo que estoy haciendo mal?

Cualquier ayuda sería apreciada.

+0

¿Ha probado la ruta relativa de "auth_basic_user_file"? – Nakul

+0

@KP ¿puedes compartir lo que solucionó esto por ti? – codecowboy

Respuesta

25

Cosas que me gustaría comprobar:

  • permisos en `/ etc/nginx/.htpasswd` - ¿Puede el archivo será leído por la cuenta que ejecuta nginx? Podría intentar, temporalmente, usar `chmod 644` para asegurarse de que todos puedan leerlo. Si eso funciona, entonces puede ordenar una combinación adecuada de las configuraciones `chown` y` chmod` para que nginx y you/root puedan leerlo pero otros usuarios no pueden (por seguridad).
  • Asegúrese de que `htpasswd` genere el hash en la forma correcta; por lo general, se trata de 13 caracteres alfanuméricos (por ejemplo, `username: wu.miGq/e3nro`). El comando PUEDE generar hashes MD5 que se verían más como `username: $ apr1 $ hzB2K ... $ b87zlCYMKufOxn9ol5QV4 /` estos no funcionan con nginx.
  • Busca aumentar la salida de depuración de nginx y comprueba los registros de errores en busca de pistas.
+4

de acuerdo con los documentos en http: // nginx.org/es/docs/http/ngx_http_auth_basic_module.html "la variante de Apache del algoritmo de contraseñas basado en MD5 (apr1)" ahora es compatible – kkurian

+0

Incluso documentos apunta que la "variante de Apache ahora es compatible", solo resolví este problema usando un Algoritmo PLAIN. Desafortunadamente, con el registro de depuración en nginx, el mensaje seguía siendo "abierto()" .htpasswd "failed (13: Permiso denegado)", que probablemente sea la causa raíz interna del problema (mirando bajo la perspectiva del desarrollador de nginx), pero es inútil cuando intentas solucionar problemas –

4

Encabezado antiguo, pero sin respuesta, y bien referenciado en Google.

Si obtiene este error y han intentado las otras sugerencias, compruebe los permisos de la carpeta padre de su archivo .htpasswd: el usuario nginx (www-data por defecto) debería haber leído y ejecutar permisos (Esto me lo arregló).

1

Otro gotcha que encontré en bash. En lugar de ingresar mi contraseña a través del mensaje, utilicé la opción -b de htpasswd para ingresar la contraseña en línea.

$ htpasswd -nb admin test123$secure 

que no podía entender por qué mi Seguí corriendo en errores de desadaptación contraseña, probar diferentes algoritmos de cifrado. Verifiqué con rizo que funcionaba:

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

Por último, el problema reveiled sí mismo a través echo

$ echo test123$secure 
test123 

hice el error de utilizar un signo dolar ($) en bash que fue interpretado como una variable vacía, omitiendo todo lo demás. Esto se puede evitar abandonando la opción -b y simplemente utilizando el indicador para ingresar la contraseña.

+0

¿A Downvoters les gusta comentar? ¿Es más un comentario que una respuesta? –

+0

Voto arriba, solo por el voto a favor .. – kev