Proxy Apache 2.4 para externo, redirecionamento para interno

7

Estou tentando configurar um proxy reverso para permitir que apenas alguns intervalos de IPs selecionados façam proxy para um host interno, enquanto eu gostaria que qualquer outra pessoa que não estivesse dentro dos intervalos de IPs redirecionasse para nosso host nomeado interno. Nesta configuração, o webservice funcionará enquanto qualquer pessoa que não esteja em VPN em nossa rede não será capaz de navegar para o recurso interno. Eu tenho tentado fazer isso funcionar sem sorte, minha configuração parcial é atualmente a seguinte:

       ProxyRequests Off
    <Proxy *>
            Allow from all
    </Proxy>
    <Location />
            Allow From xxx.xxx.xxx.xxx/24 1xxx.xxx.xxx.xxx/23
            Deny From All
            ProxyPass http://server.local.corp:8000/
            ProxyPassReverse http://server.local.corp:8000/
    </Location>

Esta configuração parece funcionar bem para bloquear outros intervalos de ip de poder fazer proxy, no entanto, não estou claro como posso adicionar uma instrução de redirecionamento para mais ninguém.

Editar Seguindo o conselho da primeira resposta, meu código agora parece:

<If "%{REMOTE_ADDR} -ipmatch 'xxx.xxx.xxx.xxx/24'">
  ProxyPass / http://server.local.corp:8000/
  ProxyPassReverse / http://server.local.corp:8000/
</If>

E o apache lança o seguinte erro ao reiniciar:

ProxyPass cannot occur within <If> section
Action 'configtest' failed.
The Apache error log may have more information.
    
por Brian 17.06.2014 / 22:52

2 respostas

1

O seguinte deve funcionar se você tiver permissão para usar subdomínios, apenas deve não posso testá-lo no momento ...

No entanto, a lógica deve funcionar.

Use o para redirecionar XTERNs para um subdomínio, por exemplo. xtern.example.com e resolva as coisas com hosts virtuais!

<VirtualHost *:80>
    ServerName example.com

    <If "%{REMOTE_ADDR} !-ipmatch 'xxx.xxx.xxx.xxx/24'">
        Redirect "/" "http://xtern.example.com"
    </If>


    ProxyPass http://server.local.corp:8000/
    ProxyPassReverse http://server.local.corp:8000/
</VirtualHost>

<VirtualHost *:80>
    ServerName xtern.example.com

    ProxyPass http://server.xtern.corp:8000/
    ProxyPassReverse http://server.xtern.corp:8000/
</VirtualHost>
    
por 24.02.2018 / 19:33
0

Você precisa envolver as diretivas ProxyPass e Redirect na declaração If recém-introduzida:  < Se expressão >    ProxyPass…   < / Se > "

Dê uma olhada no link para saber mais sobre a diretiva If e link para aprender como escrever uma expressão do Apache (-ipmatch parece ser o que você está procurando)

Observe que isso é válido apenas no Apache httpd 2.4.

    
por 17.06.2014 / 23:24