Apache VirtualHost Proxy avec un sous-répertoire

13

Actuellement, nous avons un serveur IIS comme serveur Web principal. Nous implémentons un serveur Apache à sa place, mais nous devons toujours avoir le serveur IIS accessible. En règle générale, c'est une chose simple, car Apache2 peut proxy un sous-domaine à ce serveur.

Notre problème, cependant, est le suivant: nous utilisons dotnetCharting sur le serveur IIS, et la licence est liée au nom de domaine. Pour que dotnetCharting fonctionne, une autre licence devra être achetée.

Ma question est la suivante: Apache2 peut-il proxy un sous-répertoire? Par exemple, «www.example.com/subdir» peut-il pointer vers le serveur IIS? Il semble que cela ne devrait pas être impossible, mais je n'arrive pas à trouver de solution pour cela.

SuperJer
la source

Réponses:

19

Sûr. Mais fais attention; de nombreuses applications Web ne sont pas bien conçues pour que leur chemin d’URL change. L'application est-elle actuellement utilisée dans un sous-répertoire?

# 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, si vous modifiez le chemin URL, gardez à l'esprit que beaucoup d'applications auront des problèmes avec cela, en raison de chemins absolus pour les ressources (CSS, javascript, images):

ProxyPass /subdir/ http://192.0.2.100/
ProxyPassReverse /subdir/ http://192.0.2.100/
Shane Madden
la source
Parfait! Cela a fait l'affaire dans mon environnement de test. En ce moment, en interne, vous pouvez entrer l'adresse IP du serveur et utiliser notre proxy interne pour accéder au serveur, et tout (sauf dotnetcharting) fonctionne parfaitement, donc je ne m'attends pas à ce que l'application échoue lorsque nous la proxy avec cette méthode. Très appréciée!
SuperJer
1
Je devais laisser tomber le fuite /de subdir(comme celui - ci: /subdir). Sinon, si cela domain.com/subdirentraîne une erreur d'application (500). Il serait proxy correctement si la barre oblique était incluse ( domain.com/subdir/), mais ce n'est pas l'effet que je cherchais.
OneHoopyFrood
3

Sûr.

  1. Activer mod_proxy mod_proxy_http
  2. définissez les instructions suivantes dans votre Apache VHost

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

Notez que le "/" final est obligatoire.

Pour plus d'informations: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

NCH
la source
0

la dernière barre oblique à la fin n'est PAS obligatoire. Je l'ai installé comme ça

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

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

et le niveau supérieur fonctionnait, mais tout dans les sous-répertoires sous le principal ne fonctionnait pas.

Je l'ai changé pour ça et tout a fonctionné.

Merci pour la désinformation !!!

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

ProxyPassReverse /dir http://exmpale.com/dir
geek linux agacé
la source
1
Pourquoi les gens votent-ils contre cela? C'était exactement le problème que j'avais. Vous devez soit terminer les deux URL avec une barre oblique, soit laisser les deux URL sans barre oblique .... du moins pour moi, cela a aidé en ce qui concerne les sous-répertoires;)
Jannik