Apache:如何在整个服务器的限制较低的情况下限制对目录的访问?

Apache:如何在整个服务器的限制较低的情况下限制对目录的访问?

我们的一个可公开访问的网络服务器正在使用<Location />块来限制对其自身的所有访问。

我有一个特定目录,其需要比 提供的更严格的访问限制<Location />

然而,使用<Directory /path/to/dir>是不可能的,因为<Directory>被覆盖了<Location>

我该怎么做才能限制对特定目录的访问,同时对整个 Web 服务器保持不太严格的访问限制?

无法进行更改<Location /><Directory /path/to/docroot>因为此 Apache 充当内部服务器上许多其他 Web 服务器的反向代理,这些服务器无法从网络外部直接访问。


根据要求,关于我们的配置的一些细节:

我们所有的授权和身份验证都是通过 LDAP 完成的。

由于此 Apache 充当许多内部 Web 服务器的反向代理,因此我们需要限制对所有 Web 服务器的访问:

<Location />
     Order deny,allow
     Deny from all
     AuthName [...]
     AuthType Basic
     AuthLDAPURL [...]
     AuthBasicProvider ldap
     Require ldap-attribute [...]
</Location>

文档根目录下的特定目录需要更严格的访问权限。因此我想到了这个:

<Directory /path/to/dir>
    Order allow,deny
    AuthName [...]
    AuthType Basic
    AuthLDAPURL [...]
    AuthBasicProvider ldap
    Require ldap-attribute [...]
    Require ldap-attribute [...]
    Require ldap-attribute [...]
</Directory>

但是,这不起作用,因为<Location>各节会逐节合并<Directory>(请参阅这里)。

因此,即使我已经<Directory>为目录编写了一个部分,我希望对指令有更严格的访问权限,但指令会被中的指令覆盖<Location />,从而允许比预期更多的用户访问。

答案1

如何使用<Location /location/to/restrict/>

无论如何,它们本身并不是“覆盖”;而是合并。有关更多信息,请参阅这里

<Directory>如果您对要合并的内容很谨慎,那么 您仍然可以使用。<Location>最后应用,但如果它没有指定任何访问控制,它就不会使您在中获得的内容无效<Directory>

Order deny,allow
<Location />
    # No permission settings here; no allow or deny.
    # Will be allowed by default because of the Order.
    ...
</Location>
<Directory /location/to/restrict/>
    Deny from all
    Allow from 10.0.0.0/8
    ...
</Directory>

相关内容