ProxyPass do Apache e reescrever dentro do local

1

Eu preciso converter a seguinte configuração do nginx para o apache:

location /api {
    rewrite  ^/api/(.*)$  /$1 break;
    proxy_pass http://service.local:8989;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} 

As regras acima apenas tomam parte do URL após / api e o proxy para outro servidor. E não consigo perceber como isso pode ser conseguido no apache ... Tanto quanto eu sei, não é possível definir regras de reescrita dentro da localização no apache.

    
por user144765 09.02.2015 / 16:16

1 resposta

1

Em Apache você não precisa reescrever, o seguinte irá "encaminhar" um pedido de example.com/api/login?user=name a service.local:8989/login?user=name

 ProxyPass /api http://service.local:8989/
 ProxyPassReverse /api http://service.local:8989/
 ProxyAddHeaders On
 ProxyPreserveHost On    # Typically not needed but keeps options the same as in question

Funcionalmente, o mesmo que acima, mas em uma sintaxe mais semelhante a nginx é definir a diretiva ProxyPass dentro de uma diretiva Location:

 <Location /api>
    ProxyPass http://service.local:8989/
    ProxyPassReverse http://service.local:8989/
    ProxyAddHeaders On
    ProxyPreserveHost On
 </Location>
    
por 09.02.2015 / 16:25