只允许一些IP的ProxyPass

通过下面的代码片段,每个人都可以访问/ foo和/ bar

ProxyPass /foo http://example.com/foo ProxyPassReverse /foo http://example.com/foo ProxyPass /bar http://example.com/bar ProxyPassReverse /bar http://example.com/bar 

但是如果我希望/ foo可以被所有人访问,而/ bar仅仅是来自特定IP的请求,这可能吗?

我想你可以使用SetEnvIf指令来检查远程地址(Remote_Addr)。

有了一个IP:

SetEnvIf Remote_Addr“123.123.123.123”TRUST = yes

使用正则expression式检查多个IP

SetEnvIf Remote_Addr“123.123.123.123 | 134.134。(134.(134 | 134)| 134.134)”TRUST = yes

我不确定你可以直接做这个:

ProxyPass / foo http://example.com/foo env = TRUST

但可能你可以使用重写规则并获得相同的结果…

例如,您可以将所有不受信任的IP(env =!TRUST)重写到特定页面,

希望能帮助到你。

 <Location /bar> Allow from 1.2.3.4 2.3.4.5 ... ProxyPass http://example.com/bar ProxyPassReverse http://example.com/bar </Location> 

请注意,ProxyPass和ProxyPassReverse的第一个参数隐含在这里是位置块的目标。

答案应该如下。 我已经在一个规则中包含了一个IP和一个子网,对于那些需要允许整个子网而不是一组单个IP的人来说。

 <Location /foo> Deny from all // **This rule is the most IMPORTANT** Allow from 192.168.1.2 10.100 // The second value implies 10.100.0.0/16 subnet ProxyPass http://example.com/foo ProxyPassReverse http://example.com/foo </Location>