Apache目录密码认证需启用auth_basic和authz_user模块,配置AuthType Basic、AuthName、AuthUserFile绝对路径及Require指令,并用htpasswd生成受保护的密码文件,且必须配合HTTPS使用。
在 Apache 的 <Directory> 块中添加密码认证,核心是启用 Basic 认证并正确关联密码文件。这不是加个开关就行,关键在模块、路径、权限和语法四者协同。
Basic 认证依赖两个基础模块:auth_basic 和 authz_user(部分旧版还需 authn_core)。未启用会导致 500 错误或直接跳过验证。
a2enmod auth_basic authz_user && systemctl restart apache2
a2enmod auth_basic authz_user && systemctl restart httpd
apache2ctl -M | grep -E "(auth_basic|authz_user)",应看到两行输出在虚拟主机配置(如 /etc/apache2/sites-available/000-default.conf)或主配置中,定位到目标目录的 <Directory> 段,插入以下内容:
<Directory "/var/www/html/private">AuthType BasicAuthName "管理员区域"AuthUserFile /etc/apache2/.htpasswdRequire valid-user</Directory>
AuthType Basic:固定写法,不可拼错或大小写混用AuthName:浏览器弹窗显示的提示文字,同一域名下相同值可复用凭证AuthUserFile:必须用绝对路径,且 Apache 进程(如 www-data)要有读取权限Require valid-user:允许密码文件中所有用户;若只允特定用户,改写为 Require user admin devuser
密码文件不能放在 可访问路径下(如 /var/www/ 内),否则可能被直接下载。
htpasswd -c /etc/apache2/.htpasswd admin(会提示输入并确认密码)htpasswd /etc/apache2/.htpasswd devuser
chown root:www-data /etc/apache2/.htpasswd && chmod 640 /etc/apache2/.htpasswd
Basic 认证本身不加密,仅 Base64 编码,明文传输风险极高。
– 模块是否真正加载
– AuthUserFile 路径是否拼写准确、文件是否存在
– Apache 是否有权限读取该文件
– 配置语法是否合法:apache2ctl configtest