已解决:这个想法是,如果访客来自中国,他们必须通过基本身份验证。如果您有任何其他 IP 地址,您可以轻松访问该网站(包括代理)
//1400 rules....
SetEnvIf Remote_Addr 222.249.128.0/19 china
SetEnvIf Remote_Addr 222.249.160.0/20 china
SetEnvIf Remote_Addr 222.249.176.0/20 china
AuthType Basic
AuthName "Restricted"
AuthUserFile /www/passwd/users
Require valid-user
Order allow,deny
Allow from All
Deny from env=china
Satisfy any
只需添加“来自 myiprange 的允许”或“来自 myinternalnetwork.com 的允许”。“满足任何要求”将需要有效用户或允许来自。
请参阅:身份验证、授权和访问控制
通常,默认配置对每个人都具有不受限制的访问权限
然后,您必须通过拒绝所有来强制对您的受限区域进行身份验证,然后只允许这些子网,然后对它们实际如何进行身份验证提出任何要求。全部满足用于确保需要两种访问策略。
警告!
每次我认为我理解了身份验证的工作规则时,我都必须反复使用配置,直到我得到一些正确的细微差别。仅将其用作起点。重新阅读有关 mod_auth 和 mod_access 的 apache 文档,特别注意 Order 指令。你的答案就在于此。
希望这会有所帮助,如果它与这个不匹配,请发布您的工作示例,因为这是 apache 食谱中的一个很好的食谱。
- 编辑 -
上面的测试表明,除了必须提供认证的IP地址的人之外,限制区域是禁止的。
从您的问题中不清楚是否来自其他 IP 的用户需要不受限制地访问这个“受限区域”,或者他们是否只是被禁止?
这是我用来允许所有用户的代码,拒绝来自中国的用户和密码提示: