我试图找到一个解决方案,但我的情况与大多数配置相反,而且很难找到例子。
我有一个 php 应用程序,它首先查找典型的 HTTP 身份验证,如果失败(未找到 REMOTE_USER 变量),它会显示一个登录屏幕以针对本地用户文件进行身份验证。我无法修改此 php 应用程序。
我需要配置 apache 的身份验证以匹配此场景:如果远程 IP 与我们的网络 IP 范围匹配(假设为 192.168.0),则需要 AuthType Basic 才能访问该页面。如果远程 IP 不在我们的范围内(互联网的其余部分),则跳过 AuthType Basic 并直接显示该页面,因此 php 应用程序将找不到 REMOTE_USER 变量,它将显示自己的登录页面。
这可能吗?我发现很多例子都做了完全相反的事情(如果你不在公司网络上,则要求 Apache Auth),但我没有看到任何符合我的情况的例子。
我正在修改这个例子:
<Directory /home/www/site1/private>
AuthUserFile /home/www/site1-passwd
AuthType Basic
AuthName MySite
Require valid-user
Order allow,deny
Allow from 192.168.0
Satisfy any
</Directory>
如果指定“允许来自 !(172.17.10)”,那就太好了,但我认为这是不可能的。所以我很确定我需要尝试使用 Allow、Deny 和 Order 指令,但我仍然没有找到解决方案。
有谁遇到过类似的情况?谢谢!
答案1
你能试试这个吗?
Order allow,deny
Deny from 192.168.0
Allow from All
Satisfy any