proxy Apache 2.2 reversa e reescrita

2

Estou enfrentando um problema ao tentar configurar o apache 2.2 como um proxy reverso.

Eu tenho um aplicativo em execução no meu servidor de back-end http://internal.mydomain.com/App1/ , por enquanto, esse URL será o $URL , porque sou um cara novo e não posso postar mais de 2 URLs no meu primeiro post.

Se no meu servidor proxy eu uso a seguinte configuração, tudo funciona bem

UseCanonicalName off
UseCanonicalPhysicalPort off
ProxyPreserveHost On

ProxyPassReverseCookieDomain internal.mydomain.com external.mydomain.com

ProxyPass /App1/ $URL connectiontimeout=10 timeout=60
ProxyPassReverse /App1/ $URL

O URL para acessar é external.mydomain.com/App1/

Mas meu chefe quer ter um URL diferente para isso, algo como external.mydomain.com/my/app1/ , então eu tentei com a seguinte configuração

UseCanonicalName off
UseCanonicalPhysicalPort off
ProxyPreserveHost On

ProxyPassReverseCookieDomain internal.mydomain.com external.mydomain.com

ProxyPass /my/app1/ $URL connectiontimeout=10 timeout=60
ProxyPassReverse /my/app1/ $URL

Isso deve funcionar, mas quando eu carregar a página da Web, o servidor de back-end está respondendo com isso

Cache-Control: private
Content-Type: text/html; charset=utf-8
Location: /App1/StartPage.aspx
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-UA-Compatible: IE=edge
Date: Tue, 16 Aug 2016 21:25:01 GMT
Content-Length: 144

//<html><head><title>Object moved</title></head><body>
//<h2>Object moved to <a href="/App1/StartPage.aspx">here</a>.</h2>
//</body></html>

Então, a minha pergunta é, existe alguma maneira de reescrever rapidamente tudo o que vem do backend?

    
por Gustavo G E 17.08.2016 / 00:04

1 resposta

0

O ProxyPassReverse deve permitir que você corrija quaisquer cabeçalhos HTTP de Localização, Localização de Conteúdo ou URI retornados pelo servidor de back-end.

Isso pode ser um pouco complicado quando, como seu chefe quer, você ProxyPass usando um caminho de URI diferente para o caminho de implantação do aplicativo subjacente. É muito mais estável implantar o aplicativo subjacente no novo caminho (/ my / app1 / neste caso). Se seu chefe insiste , e você não pode alterar o caminho de implantação, precisará de uma linha ProxyPassReverse diferente. Algo como o seguinte:

ProxyPass /my/app1/ http://internal.mydomain.com/App1/
ProxyPassReverse /App1/ /my/app1/

Se você tiver links no HTML do servidor de back-end que precisa ser modificado, será necessário atualizar para o Apache httpd v2.4 e usar mod_proxy_html ou hackear algo junto com mod_sed ou mod_substitute para corrigir URLs ofensivos.

    
por 23.08.2016 / 10:48