Permitir somente ProxyPass para alguns IP's

6

Com o seguinte snippet, todos podem acessar / foo e / 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

Mas e se eu quiser / foo ser acessível para todos e / bar apenas para solicitações vindas de um IP específico, isso é possível?

    
por mobmad 15.02.2010 / 11:49

3 respostas

3

Acho que você pode usar uma diretiva SetEnvIf verificando o endereço remoto ( Remote_Addr ).

Com um IP:

SetEnvIf Remote_Addr "123.123.123.123" TRUST=yes

Verificando vários IPs com expressão regular

SetEnvIf Remote_Addr "123\.123\.123\.123|134\.134\.(134\.(134|134)|134\.134)" TRUST=yes

Não sei se você pode fazer isso diretamente:

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

Mas provavelmente você pode trabalhar com as regras de reescrita e obter o mesmo resultado ...

Por exemplo, você pode reescrever para uma página específica todo o IP que não é confiável ( env=!TRUST )

Espero que ajude.

    
por 15.02.2010 / 12:11
4
<Location /bar>
    Allow from 1.2.3.4 2.3.4.5 ...
    ProxyPass http://example.com/bar
    ProxyPassReverse http://example.com/bar
</Location>

Observe que o primeiro argumento para ProxyPass e ProxyPassReverse está implícito aqui para ser o alvo do bloco de localização.

    
por 16.02.2010 / 14:52
3

A resposta deve ser a seguinte. Eu incluí um IP e uma sub-rede em uma regra, para aqueles que precisam permitir uma sub-rede inteira em vez de um conjunto de IPs únicos.

<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>
    
por 25.07.2016 / 11:40