Apache转发代理,只允许代理到特定主机,拒绝所有其他内容

Apache转发代理,只允许代理到特定主机,拒绝所有其他内容,apache,mod-proxy,Apache,Mod Proxy,我已经使用Apache2.4设置了一个转发代理。我想允许代理用户访问七个不同的域,并拒绝其他任何内容。我已将对七个域的访问配置如下: # Allow proxy only to these test sites <ProxyMatch ^https\:.{1,20}\.?test\.(com|io|zone)> Include /etc/apache2/sites-available/password-protect.conf </ProxyMatch> &

我已经使用Apache2.4设置了一个转发代理。我想允许代理用户访问七个不同的域,并拒绝其他任何内容。我已将对七个域的访问配置如下:

# Allow proxy only to these test sites
<ProxyMatch ^https\:.{1,20}\.?test\.(com|io|zone)>
      Include /etc/apache2/sites-available/password-protect.conf
</ProxyMatch>

<ProxyMatch ^https\:.{1,20}\.?testhost\.(cloud|com|io)>
      Include /etc/apache2/sites-available/password-protect.conf
</ProxyMatch>

<ProxyMatch ^https\:.{1,20}\.?test-content\.com>
      Include /etc/apache2/sites-available/password-protect.conf
</ProxyMatch>
#仅允许代理这些测试站点
包括/etc/apache2/sites available/password-protect.conf
包括/etc/apache2/sites available/password-protect.conf
包括/etc/apache2/sites available/password-protect.conf
我已经在每个ProxyMatch指令中临时包含了密码保护,以便验证正则表达式是否匹配。那部分工作正常。我的问题是我想不出一个否认一切的方法。我添加了一个ProxyMatch标记来拒绝*,它确实拒绝了一切。Apache不只是找到第一个匹配的ProxyMatch然后停止。最后一个拒绝所有匹配所有


我想我可以创建一个复杂的正则表达式,在这里我使用三个ProxyMatch正则表达式,在每个表达式中添加一个NOT运算符,并将它们一起“或”。那看起来像是一团乱麻。如果我以后添加更多正则表达式匹配,我的“全包”ProxyMatch将无法维护。只是想检查一下,是否有更好的方法来为任何与上述三个ProxyMatch表达式不匹配的代理请求创建一个“全包拒绝”。我已经看过mod_proxy文档中的所有代理指令。没有办法做到这一点而不造成混乱。

您是否将“ProxyMatch deny”作为配置中的最后一个?因为:
匹配的第一条规则获胜。
您也可以在
中使用
ProxyMatch
并在
中拒绝,否则
是的,我将拒绝放在最后。看来每场比赛都赢了。