关闭单个目录的 Apache 基本身份验证
在设置临时站点或类似站点时,我经常添加一个简单的Apache身份验证检查,以阻止每个人查看站点。这对于阻止搜索引擎蜘蛛访问带有测试内容的站点也很有用,这通常会导致问题。它不是非常安全,但它几乎让所有人都远离。
设置基本的Apache密码检查并不困难,只需要几行Apache配置即可。这可以放在web目录或服务器配置中的.htaccess文件中。以下配置设置了一个非常简单的身份验证屏障。
AuthName "Restricted Area" AuthType Basic AuthUserFile /var/www/passwords/.htpasswd AuthGroupFile /dev/null Require valid-user
上例中的.htpasswd文件是存储您的用户信息的地方,因此通常最好将其保存在您的webroot之外。.htpasswd文件可以手动编辑,但添加密码最简单的方法是使用htpasswd命令,这将提示输入密码。
htpasswd.htpasswd
完成所有这些设置后,您可能会发现需要允许访问某个目录。这可能是为了测试传入的API连接到服务器,否则会被阻止。要允许访问单个目录,您需要创建一个额外的.htaccess文件并添加SatifyAny配置选项。这将告诉Apache允许任何用户访问该目录,从而绕过密码控制。
SatisfyAny
您不需要使用.htaccess文件来以这种方式控制目录访问。整个事情可以从主要的ApacheWeb配置或通过虚拟主机配置进行控制。在Apache配置文件中,以下配置可用于限制对目录/var/www/protected中站点的访问。
AuthName "Restricted Area" AuthType Basic AuthUserFile /var/www/passwords/.htpasswd AuthGroupFile /dev/null Require valid-user
通过添加额外的目录声明并包括像这样的满足任何选项,可以取消对单个目录的保护。
Satisfy Any
我应该提到这是基本身份验证,因此并不完全安全,但它在阻止大多数用户和服务器访问网站方面做得很好。没有使用复杂的蛮力检查机制或密码加密技术。此外,如果您不在服务器上使用SSL,则可以拦截和提取用户名和密码。