精简繁琐的 Apache“allow from”指令

精简繁琐的 Apache“allow from”指令
<Proxy *>
Order deny,allow
Deny from all
Allow from cdn1.domain.com cdn2.domain.com cdn3.domain.com cdn4.domain.com cdn5.domain.com
</Proxy>

实际上比这要长得多。是否可以以某种方式使用正则表达式?我正在运行 2.2

答案1

如果您可以允许所有主机进入domain.com,那么就非常简单了:

Allow from .domain.com

如果您只需要允许这些cdn*主机,那么您就倒霉了 - 正则表达式不受支持Allow,并且其他访问控制机制无法执行必要的反向 DNS 查找(例如mod_rewriteSetEnvIf使用Allow from env=)。

正如 EightBitTony 在评论中提到的,您需要使用其他标准来控制访问——IP 范围是最好的。

编辑:实际上,mod_rewrite可能能够使用REMOTE_HOST变量。也许可以尝试这样的方法?不确定它是否会进行反向查找和正向查找来确认,因此安全性可能不那么可靠。

RewriteCond %{REMOTE_HOST} ^cdn\d+\.domain\.com$
RewriteRule ^ - [E:CDNALLOW]
Allow from env=CDNALLOW

答案2

的文档允许指令非常好,它表示允许接受部分名称,因此

Allow from domain.com 

只要您不介意 domain.com 的其余部分访问代理,就可以在某种程度上简化它,但对于主机的正向/反向 DNS 查找也存在一些注意事项。

如果 cdn 机器共享子网或部分子网,您可能也可以对此采取一些措施。

答案3

1)如果 domain.com 下的任何内容都可以,则可以使用前导点(即 .domain.com )

2)您可以填充环境变量并让 Apache 引用它。

allow from env=allowed_cdn_hosts

相关内容