压缩繁琐的Apache“允许”指令

<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> 

实际上比这长得多。 有没有可能使用正则expression式? 我正在运行2.2

如果你可以允许domain.com所有主机,那么这很简单:

 Allow from .domain.com 

如果您只需要允许那些cdn*主机,那么您的运气不好 – 在Allow不支持regex,其他访问控制机制不能进行必要的反向DNS查找(如mod_rewriteSetEnvIfAllow from env= )。

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

编辑:其实, mod_rewrite可能与REMOTE_HOSTvariables。 也许尝试这样的事情? 不确定是否执行反向查找和正向查找来确认,所以安全性可能不如可靠。

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

allow指令的文档相当不错,它表示allow将接受部分名称

 Allow from domain.com 

只要您不介意访问代理的domain.com的其余部分,就可以简化它,也有关于主机正向/反向DNS查找的警告。

如果cdn机器共享子网或部分子网,您也可以使用这些。

1)如果domain.com下的任何东西都可以,您可以使用一个前导点(即.domain.com)

2)你可以填充一个环境variables,并有Apache的参考。

 allow from env=allowed_cdn_hosts