Proxy do Apache VirtualHost com um subdiretório

13

Atualmente, temos um servidor IIS como nosso servidor Web principal. Estamos implementando um servidor Apache em seu lugar, mas ainda precisamos ter o servidor IIS acessível. Normalmente, isso é uma coisa simples, porque o Apache2 pode proxy de um subdomínio para este servidor.

Nosso problema, no entanto, é o seguinte: estamos usando dotnetCharting no servidor IIS e o licenciamento está vinculado ao nome de domínio. Para que o dotnetCharting funcione, será necessário adquirir outra licença.

Minha pergunta é: o Apache2 pode proxy um subdiretório? Por exemplo, 'www.example.com/subdir' pode apontar para o servidor IIS? Parece que não deveria ser impossível, mas não consigo encontrar uma solução para isso.

SuperJer
fonte

Respostas:

19

Certo. Mas tenha cuidado; muitos aplicativos da web não foram projetados bem para alterar o caminho do URL. O aplicativo é usado em um subdiretório atualmente?

# You'll probably want this to maintain the host mapping in IIS
ProxyPreserveHost On
# Swap in the IP address or internal host name of your IIS server:
ProxyPass /subdir/ http://192.0.2.100/subdir/

Ou, se você estiver alterando o caminho da URL, lembre-se de que muitos aplicativos terão problemas com isso, devido a caminhos absolutos para recursos (CSS, javascript, imagens):

ProxyPass /subdir/ http://192.0.2.100/
ProxyPassReverse /subdir/ http://192.0.2.100/
Shane Madden
fonte
Perfeito! Isso fez o truque no meu ambiente de teste. No momento, internamente, você pode inserir o endereço IP do servidor e usar nosso proxy interno para acessá-lo, e tudo (exceto dotnetcharting) funciona perfeitamente, por isso não espero que o aplicativo falhe quando o proxyarmos com esse método. Muito apreciado!
SuperJer
1
Eu tive que deixar a trilha /de subdir(assim :) /subdir. Caso contrário, se domain.com/subdirresultar em um erro de aplicativo (500). Seria proxy corretamente se a barra fosse incluída ( domain.com/subdir/), mas esse não é o efeito que eu estava procurando.
OneHoopyFrood
3

Certo.

  1. Ativar mod_proxy mod_proxy_http
  2. defina as seguintes instruções no seu Apache VHost

    ProxyPass /subdir http://iis.server/.../
    ProxyPassReverse /subdir http://iis.server/.../
    

Observe que o "/" final é obrigatório.

Para obter mais informações: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

NCH
fonte
0

a barra final no final NÃO é obrigatória. Eu tinha configurado assim

ProxyPass /dir http://exmpale.com/dir/ 

ProxyPassReverse /dir http://exmpale.com/dir/ 

e o nível superior funcionava, mas tudo em subdiretórios abaixo do principal não.

Eu mudei para isso e tudo funcionou.

Obrigado pela desinformação !!!

ProxyPass /dir http://exmpale.com/dir

ProxyPassReverse /dir http://exmpale.com/dir
geek irritado do linux
fonte
1
Por que as pessoas negam isso? Foi exatamente o problema que tive. Você tem que quer terminar ambas as urls com uma barra ou deixar ambas as urls sem uma barra .... pelo menos para mim ele ajudou quando chegou a sub-diretórios;)
Jannik