Fill in the details
Fields marked * are required; leave the rest blank for defaults
Hash checker Does an existing hash match a password?
- No login box, or a straight 500?
-
- 500 with
AuthUserFile ... not allowed herein the log:AllowOverridefor that directory is None. Set it toAuthConfigorAll— and that can only be done in the main config, not from .htaccess. - 500 with
Invalid command 'AuthType':mod_auth_basic/mod_authn_fileare not loaded. - The password is always rejected: check that AuthUserFile is an absolute path readable by the Apache user, then use the checker above to confirm the hash itself is sound.
- Apache on Windows rejects
$6$/$5$/ DES: those rely on the system crypt(). Use bcrypt or APR1-MD5 instead.
- 500 with
- Changed the Nginx config and nothing happened?
-
- Most common: when
nginx -tfails, a reload silently keeps the old config. Always read thenginx -toutput before reloading. - Static files ask for a password but
.phpdoes not: the directives sit insidelocation /while PHP requests match a siblinglocation ~ \.php$.auth_basicis inherited only by nested locations, never by siblings. Move it up to theserverlevel. - Every password is rejected: look for
open() "..." failedin the error log - the path is wrong or the worker user (www-data/nginx) cannot read it. Once the path checks out, use the checker above to confirm the hash itself. - bcrypt is rejected: Nginx has no built-in bcrypt and hands it to the system
crypt(). Older systems without libxcrypt do not support$2y$- switch to APR1-MD5.
- Most common: when
- Is Basic auth secure enough?
- Credentials are Base64-encoded and resent with every request — that is plaintext in practice. HTTPS is mandatory, otherwise anyone on the same network can read them. There is also no rate limiting and no CAPTCHA, so treat it as a way to keep casual visitors and crawlers out, not as a real login system.