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.

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/

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


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.