我想限制对某些IP的完整网站(apache 2.4)的访问。最重要的是,我想通过用户身份验证限制对某些子文件夹的访问。用户身份验证无效。这是我得到的:
在vhost配置中我有
<Location />
# Localhost
Require ip 127.0.0.1i
# some other IP
Require ip 1.2.3.4
<Location>
现在我希望子文件夹/ secure /需要有效的用户登录
<webroot>/secure/.htaccess
看起来像
<RequireAll>
Require all granted
Require user user1 user2 user3
AuthBasicProvider file
AuthType Basic
AuthName "Secure Folder Login"
AuthUserFile /securePath/userAuth
</RequireAll>
我仍然可以在没有用户身份验证的情况下从IP 1.2.3.4访问/保护。感觉apache与IP匹配Require ip 1.2.3.4
指令(在implicid RequireAny
内部)并且不关心可能的额外限制。
答案 0 :(得分:2)
如果您希望阻止任何IP但只阻止列表中的IP,并提供基本登录提示允许的IP,您可以执行类似(在.htaccess内):
Require all denied
<RequireAll>
Require valid-user
Require ip 100.04.04.04
AuthBasicProvider file
AuthType Basic
AuthName "Secure Folder Login"
AuthUserFile /htdocs/www/web_projects/.htpasswd
</RequireAll>
对于多个IP,以下内容应该起作用:
Require all denied
<RequireAll>
<RequireAny>
Require ip 78.53.160.0/19
Require ip 80.171.1.0/24
Require ip 80.171.2.0/23
Require ip 80.171.4.0/22
Require ip 80.171.8.0/21
Require ip 80.171.16.0/20
Require ip 80.171.32.0/19
Require ip 80.171.64.0/18
</RequireAny>
<RequireAll>
Require valid-user
AuthBasicProvider file
AuthType Basic
AuthName "Secure Folder Login"
AuthUserFile /htdocs/www/web_projects/.htpasswd
</RequireAll>
</RequireAll>
答案 1 :(得分:0)
至少位置(位置,目录,文件和.htaccess指令之外)似乎是单独评估的,并且最后和出现的顺序相反。我没有完全检查,我找不到文档。
长话短说
我可以通过放置
来达到我想要的效果<Location /secure/>
Require all denied
<RequireAll>
Require user user1 user2 user3
AuthBasicProvider file
AuthType Basic
AuthName "Secure Folder Login"
AuthUserFile /securePath/userAuth
</RequireAll>
</Location>
低于 vhost配置中的<Location />Require ip 1.2.3.4</Location>
块 (上面不起作用)。使用<Directory>
阻止或.htaccess
无效。