通过下面的代码片段,每个人都可以访问/ 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>