我正在尝试配置 Apache,以允许来自选定 IP 的用户无需身份验证即可访问 Flask 应用程序,但会质询任何其他用户的凭据。
目前情况我有以下配置:
<directory /var/www/flaskapp>
WSGIProcessGroup flaskapp
WSGIApplicationGroup %{GLOBAL}
WSGIScriptReloading On
WSGIPassAuthorization On
Order deny,allow
AuthType Basic
AuthName "Restricted area - authorised users only"
AuthUserFile "/usr/local/apache/passwd"
<RequireAll>
<RequireAny>
Require ip 1.1.1.1
</RequireAny>
Require valid-user
</RequireAll>
</directory>
这不起作用,而是提示所有用户进行身份验证。
我应该提到我已经在配置中指示的htpasswd
位置创建了一个用户文件。/usr/local/apache/passwd
答案1
你只需要RequireAny
健康)状况:
<RequireAny> 和 </RequireAny> 用于包含一组授权指令,其中一个指令必须成功,<RequireAny> 指令才能成功。
<RequireAny>
Require ip 1.1.1.1
Require valid-user
</RequireAny>
答案2
由于您正在运行 Apache 2.4,因此您可以使用表达式. 在你的情况下将是:
<If "%{REMOTE_ADDR} != '127.0.0.1'">
AuthType Basic
AuthName "Restricted area - authorised users only"
AuthUserFile usr/local/apache/passwd
require valid-user
</If>
还支持 CIDR 表示法。例如:
<If "%{REMOTE_ADDR} != '192.168.0.0/24'">
AuthType Basic
AuthName "Restricted area - authorised users only"
AuthUserFile usr/local/apache/passwd
require valid-user
</If>