2017-06-15 2 views
0

J'ai un tas d'applications identiques qui sont configurées pour écouter sur le même chemin d'URL. Par exemple:URL de l'espace de noms Using Reverse Proxy (Apache)

http://server:80/app

Je voudrais installer un reverse proxy Apache pour fournir des espaces de noms aux URL de sorte que chaque application ne sera pas des URL contradictoires:

http://proxy:80/namespace1/app -> http://destserver1:80/app 
http://proxy:80/namespace2/app -> http://destserver2:80/app 

J'ai joué avec ProxyPass, ReverseProxyPass , et les options ProxyPreserveHost en vain. Plus précisément, lorsque les applications envoient une demande de redirection, les redirections ne conservent pas l'espace de noms. À quoi ressemblerait un exemple de fichier de configuration httpd pour appliquer une fonction d'espace de noms tout en agissant comme un proxy inverse?

Ceci est ma config exemple (pour un seul serveur) qui ne fonctionne pas avec réoriente:

Listen 80 

<VirtualHost *:80> 

ServerName 127.0.0.1:80 

<Location /namespace/app/> 
    ProxyPreserveHost on 
    ProxyPass http://destserver:80/app/ 
    ProxyPassReverse http://destserver:80/app/ 
</Location> 

#ErrorLog logs/test-log 
</VirtualHost> 

Le problème est que http://proxy:80/namespace/app/path envoie une redirection qui devient http://proxy:80/app/path/redirect/path (404) qui manque l'espace de noms.

Merci

Répondre

0

Ce tutoriel fournit la réponse à mon cas précis d'utilisation: http://www.apachetutor.org/admin/reverseproxies

Je copié les extraits importants ci-dessous:

The fundamental configuration directive to set up a reverse proxy is 
ProxyPass. We use it to set up proxy rules for each of the application servers: 


ProxyPass  /app1/ http://internal1.example.com/ 
ProxyPass  /app2/ http://internal2.example.com/ 

... 

The command to enable such rewrites in the HTTP Headers is ProxyPassReverse. 
The Apache documentation suggests the form: 


ProxyPassReverse /app1/ http://internal1.example.com/ 
ProxyPassReverse /app2/ http://internal2.example.com/ 
However, there is a slightly more complex alternative form that I recommend 
as more robust: 


<Location /app1/> 
    ProxyPassReverse/
</Location> 
<Location /app2/> 
    ProxyPassReverse/
</Location>