Como fazer solicitações de proxy para uma rota localhost para uma URL não local

1

Estou configurando um ambiente local para testes usando o WAMP.

O aplicativo (aplicativo angular) fica no diretório / wamp / www / app /. Ele faz solicitações para outra API enviando solicitações para outra rota no mesmo servidor. (Especificamente para / wamp / www / api / route)

Temos um servidor dev api que existe no link . Temos outra instância de teste do aplicativo angular no link que pode enviar solicitações para link apontando para link .

A maneira como isso funciona na instância de teste (não local) é que temos um arquivo .htaccess no link que leva solicitações para link * e enviá-las para o link *

O arquivo .htaccess que faz isso é o seguinte:

<IfModule mod_rewrite.c>
    RewriteRule (.*) http://api.com/$1 [NC,P]
</IfModule>

Quando copio esse arquivo .htaccess para meu diretório / wamp / www / api / route /, espero o seguinte comportamento:

O que eu quero

O aplicativo enviará uma solicitação para / wamp / www / api / route / stuff / e o arquivo .htaccess em / route / aceita essa solicitação e a envia para link

O que eu recebo

O aplicativo enviará uma solicitação para / wamp / www / api / route / stuff / e receberá uma resposta 404.

Certifiquei-me de que AllowOverride all está definido, que o mecanismo de reescrita está ativado e que a reconfiguração de mod está ativada. Eu sei que o arquivo .htaccess está sendo visto, porque se eu colocar lixo nele, recebo um 500 em vez do 404, e meu lixo entra no log.

Qualquer ajuda seria muito apreciada! Obrigado.

Após a ajuda do Purefan, eu habilitei a reescrita do registro e, desde a ativação, não houve tentativas de reescrita, o que sugeriria que a regra de reescrita não está sendo executada nas solicitações.

Eu agora tentei alterar o fluxo de como eu chamo a regra de reescrita.

Eu criei um diretório no arquivo de configuração httpd, da seguinte forma:

<Directory "c:/wamp64/www/api/route">
    Options  +FollowSymLinks
    RewriteEngine on
    <IfModule mod_rewrite.c>
        RewriteRule (.*) http://api.com/$1 [NC,P]
    </IfModule>
</Directory>

E ainda obtenho o mesmo comportamento

    
por Xgongiveittoya 03.02.2017 / 16:48

1 resposta

1

Graças a Purefan, com o registro de reescrita ativado, vi que a reescrita estava tentando reescrever, mas a solicitação nunca foi enviada.

Quando removi o sinalizador P da RewriteRule, ele reescreveria a solicitação, mas meus cabeçalhos não foram adicionados, porque não estávamos fazendo proxy, o que preciso fazer.

Isso me leva a perceber que o proxy não estava funcionando corretamente, o que imediatamente permitiu a solução:

No arquivo httpd.conf, mude

#LoadModule proxy_module modules/mod_proxy.so

para

LoadModule proxy_module modules/mod_proxy.so

TL; DR

Habilite o mod_proxy se você quiser fazer proxy com o sinalizador P em uma regra de reescrita

    
por 03.02.2017 / 21:37