填写信息,生成代码
带 * 的是必填项,其余留空即用默认值
校验工具 已有的摘要和口令对得上吗
- 加了之后没弹登录框,或者直接 500 了?
-
- 500 且日志里有
AuthUserFile ... not allowed here:主配置里该目录的AllowOverride是 None,需要改成AuthConfig或All。这条只能在主配置改,.htaccess 里改不了。 - 500 且日志里有
Invalid command 'AuthType':mod_auth_basic/mod_authn_file没加载。 - 口令一直提示错误:先确认 AuthUserFile 写的是绝对路径,且 Apache 运行用户能读到这个文件;再用上面的「校验工具」确认摘要本身没问题。
- Windows 版 Apache 上认不了
$6$/$5$/ DES:这些依赖系统 crypt(),请改用 bcrypt 或 APR1-MD5。
- 500 且日志里有
- Nginx 上改了配置却没生效?
-
- 最常见:
nginx -t报错时 reload 会静默保留旧配置。一定要先看nginx -t的输出,再 reload。 - 静态文件要密码、
.php不要:指令被放进了location /,而 PHP 请求命中的是并列的location ~ \.php$——auth_basic只被子 location 继承,不会跨到并列的 location。把它挪到server层即可。 - 一直提示口令错误:在错误日志里找
open() "..." failed—— 说明口令文件路径不对或 worker 用户(www-data/nginx)读不到。路径确认无误后,再用上面的「校验工具」确认摘要本身没问题。 - bcrypt 不认:Nginx 没有内置 bcrypt,是交给系统
crypt()的。老系统缺 libxcrypt 就不支持$2y$,改用 APR1-MD5 即可。
- 最常见:
- 基本认证够安全吗?
- 账号口令是 Base64 编码后随每个请求发送的,等于明文。必须配合 HTTPS,否则同网络的人可以直接抓到。另外它没有失败次数限制、没有验证码,只适合挡住无关访客与爬虫,不能当正式的登录系统用。