Apache基本身份验证,但允许的除外

lep*_*epe 24 apache authentication basic-authentication

问题:我在/ var/www/files /下有一些文件,我希望从特定的IP地址访问它们而不需要用户/密码.但是,我希望任何其他IP地址都应该要求登录才能获得访问权限.

这是在我的httpd.conf中:

<Directory /var/www/files/>
        Order deny,allow
        Deny from all
        Allow from 192.168 
        AuthUserFile /etc/apache2/basic.pwd 
        AuthName "Please enter username and password" 
        AuthType Basic 
        Require user valid-user 
</Directory>
Run Code Online (Sandbox Code Playgroud)

但是,如果我理解正确,这意味着任何来自192.168.*的客户端都可以访问该目录,但是需要有效用户才能查看其内容.任何其他IP地址都将被拒绝.对?

先感谢您.

Bri*_*ith 47

这就是Apache 2.4+的完成方式(因为Satisfy Any不再支持).

<Directory /var/www/files/>

    AuthType Basic
    AuthName "Please enter your username and password"
    AuthUserFile /var/www/files/.htpasswd

    <RequireAny>
      Require ip 22.33.44.55
      Require valid-user
    </RequireAny>

</Directory>
Run Code Online (Sandbox Code Playgroud)

如果您想同时要求IP地址 - 和 - 登录/密码,请更改<RequireAny><RequireAll>

我希望这对某人有所帮助 - 因为我花了一段时间才弄明白.


Wri*_*ken 13

编辑:这可能是接受的答案,但旧的.对于新的Apache安装,请在此处使用Brians答案

添加这个:( Satisfy Any这意味着应该传递这两个中的任何一个).

语法是:

Require valid-user
Run Code Online (Sandbox Code Playgroud)

要么:

Require user <userid>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!做到了!。这是感兴趣的人的链接:http://httpd.apache.org/docs/2.0/mod/core.html#satisfy (2认同)

fra*_*acz 5

如果您的服务器在代理后面,则不能Require ip直接依赖。但是,您可以使用Require env

<Directory /var/www/files/>

    AuthType Basic
    AuthName "Please enter your username and password"
    AuthUserFile /var/www/files/.htpasswd

    SetEnvIF X-Forwarded-For "22.33.44.55" AllowIP

    <RequireAny>
      Require env AllowIP
      Require valid-user
    </RequireAny>

</Directory>
Run Code Online (Sandbox Code Playgroud)

想法的来源