在 apache 2.4.6 中,我想拒绝访问整个域,除了一个(或多个)特定主机(以及世界其他主机)。有点像:
Require not host xxx.com ## nobody from this domain gets in...
Require host blah.xxx.com ## --except for this one host in xxx.com
Require all granted ## and the rest of the world!
这还可以吗?如果是这样,谁能描述一下 RequireAny/All/None 看似神奇的组合来实现这一点?
除此之外,我想将逻辑与其他列入黑名单的域重复(可能有它们自己的例外)。
答案1
这就是我要做的:
- 我会确保您的订单指令设置为允许、拒绝。
然后我会:
Allow all granted ## and the rest of the world! Allow host blah.xxx.com ## --except for this one host in xxx.com Deny not host xxx.com ## nobody from this domain gets in...
但:
Allow host blah.xxx.com ## --except for this one host in xxx.com
毫无意义,因为这是第一个允许的。
因为:
Order Allow,Deny
Allow from example.org
Deny from foo.example.org
顺序意味着向下限制到主机,而不是从域向上限制到主机。
简而言之,由于 order 的工作方式,仅使用 apache 确实无法实现您想要的功能。因为最后一条指令总是会覆盖其余指令。
但是,您可以通过不允许其通过防火墙来阻止您想要的主机。
因为防火墙是第一位的,所以它甚至不会进入需要过滤的服务。