Possivelmente você poderia usar mod_headers em conjunto com mod_proxy. Eu não testei embora.
Portanto, para o seu vhost app-dev você poderia ter:
RequestHeader set Host "app.internal.domain"
e, em seguida, você adicionaria:
ProxyPreserveHost On
espero que vocês possam me ajudar com um problema de proxy que eu tenho.
O que eu já tenho
Eu configurei um proxy reverso http do apache para solicitações de proxy de * .proxy.domain para * .intern.domain. O apache é a única maneira de acessar meus aplicativos da Web internos a partir de uma rede externa.
Exemplo:
app.proxy.domain -> app.intern.domain
mail.proxy.domain -> mail.intern.domain
Isso tudo está funcionando muito bem, mas tenho o seguinte problema.
Problema
Desejo fazer o proxy das seguintes solicitações:
app.proxy.domain -> app.internal.domain
app-dev.proxy.domain -> app-dev.internal.domain
Isso não é problema, mas infelizmente o servidor app-dev executa uma cópia exata do aplicativo da web dos servidores de aplicativos, e este webapplication responde apenas ao seu nome de host (app.intern.domain)
Então, o que eu preciso fazer é usar o seguinte proxy
app.proxy.domain -> app.internal.domain (10.0.1.1)
app-dev.proxy.domain -> app.internal.domain (10.0.1.2)
Eu posso fazer a segunda coisa, adicionando "10.0.1.2 app.internal.domain" em / etc / hosts, mas isso também significa que app.proxy.domain irá parar no servidor de desenvolvimento.
Estou procurando uma opção, para definir a entrada / etc / hosts somente dentro do arquivo de configuração do vhost para app-dev.proxy.domain, para que todas as outras configurações vhost usem apenas o DNS para app.intern.domain.
Pensamentos ...
Existe uma maneira de dizer a configuração do apache, para o
ProxyPass / http://10.0.1.2/
mas envia app.intern.domain como hostname?
Editar o aplicativo da web dev-servers para ouvir app-dev não é uma opção, já que é uma cópia exata (não é minha decisão ...)
Obrigado!
Possivelmente você poderia usar mod_headers em conjunto com mod_proxy. Eu não testei embora.
Portanto, para o seu vhost app-dev você poderia ter:
RequestHeader set Host "app.internal.domain"
e, em seguida, você adicionaria:
ProxyPreserveHost On
A solução feia é usar (em vez de: abuse) o / etc / hosts para apontar app.internal.domain para localhost e, em seguida, configurar o Apache para ouvir duas portas adicionais, uma para cada app e app-dev. Então, inverta o proxy duas vezes:
Listen 80
Listen 127.0.0.1:8001
Listen 127.0.0.1:8001
<VirtualHost *:80>
ServerName app.proxy.domain
ProxyPass / http://app.internal.domain:8001
</VirtualHost>
<VirtualHost *:80>
ServerName app-dev.proxy.domain
ProxyPass / http://app.internal.domain:8002
</VirtualHost>
<VirtualHost 127.0.0.1:8001>
ServerName app.internal.domain
ProxyPreserveHost On
ProxyPass / http://10.0.1.1/
</VirtualHost>
<VirtualHost 127.0.0.1:8002>
ServerName app.internal.domain
ProxyPreserveHost On
ProxyPass / http://10.0.1.2/
</VirtualHost>
Adicione a configuração do proxy reverso (foe app-dev.proxy ..):
RequestHeader edit Host ^app-dev.proxy.domain app.proxy.domain
Você precisa ativar os mod_headers antes:
a2enmod headers
O servidor interno 10.0.1.2 deve ter
ServerName app.proxy.domain