I am trying to get basic authentication working with nginx in Ubuntu Jaunty. In nginx.conf, I added these two lines under the server context:
server {
...
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
...
}
Then I apt-get'ed apache2-utils to get htpasswd, which I used to create the htpasswd file:
htpasswd -d -c /etc/nginx/.htpasswd joe
When I try to access the site, the authentication dialog comes up as expected, but when I put in the username and password, it just refreshed the dialog box. It doesn't seem to like the password I am providing it. I tried running htpasswd both with and without the -d option, but still no luck. It refused to authenticate. Any ideas what I'm doing wrong?
Any help would be appreciated.
Another gotcha I ran into on bash. Instead of entering my password via prompt I used the
-b
option ofhtpasswd
to enter the password in-line.I couldn't understand why my I kept on running into password mismatch errors, trying different encryption algorithms. I verified with curl that it worked:
Finally, the problem reveiled itself through
echo
I made the mistake of using a dolar sign ($) in bash which was interpreted as an empty variable, thus omitting everything else. This can be avoided by dropping the
-b
option and just using the prompt to enter the password.Things I would check:
Old thread, but no answer, and well referenced on Google.
If you get this error and have tried the other suggestions, check the permissions of the parent folder of your .htpasswd file: the nginx user (www-data by default) should have read and execute permissions (this fixed it for me).