2010-04-05 7 views
1

J'essaie d'utiliser mod_rewrite pour mapper plusieurs domaines à différentes servlets sur un hôte. Exemple:Apache mod_rewrite et plusieurs domaines

www.dom1.com -> 192.168.1.n/dom1

www.dom2.com -> 192.168.1.n/dom2 ...

J'utilise la directive mod_rewrite et mod_proxy et la directive VirtualHost mais il semble que le mappage inverse via ProxyPassReverse ne fonctionne pas comme prévu.

ProxyPassReverse /subdomain.domain.com http://192.168.1.n/subdomain 

ne fonctionne pas. Je suis devenu rewrite-logging avec

RewriteLog /var/log/rewrite.log 

A partir des journaux, je dirais que les travaux de réécriture et le problème semble être avec la cartographie inverse. Cependant, je ne vois aucune entrée de mappage inversée. Il semble que le mappage inverse ne soit pas enregistré ou nécessite une commande différente pour être activé. (Apache et le conteneur de servlet sont sur des machines différentes, mais cela ne devrait pas importer?)

Répondre

2

Après tout, j'ai trouvé une solution qui fonctionne pour moi. Ceci est un extrait de ma configuration qui montre un hôte virtuel pour le domaine 1

<VirtualHost *> 
    ServerName www.dom1.com 
    ServerAlias dom1.com 

    RewriteEngine On 

    # logs might be omitted 
    RewriteLog /var/log/dom1_rewrite.log 
    RewriteLogLevel 2 
    CustomLog /var/log/dom1_custom.log common 
    ErrorLog /var/log/dom1_error.log 

    # rewrite to internal ip 
    RewriteRule ^/(.*) http://192.168.1.105/dom1/$1 [L,P,E=proxy_ok:1] 

    # Preserve the host-part in the forwarded url 
    ProxyPreserveHost On 

    # Substitute responses with the original 
    ProxyPassReverse/http://192.168.1.105/dom1/ 
    ProxyPassReverse/http://192.168.1.105/dom1 
    ProxyPassReverse/http://dom1.com/dom1/ 
    ProxyPassReverse/http://dom1.com/dom1 
</VirtualHost> 

Quel était le problème avec ma première configuration - je devais préserver l'hôte, puis ajouter toutes les règles de ProxyPassReverse nécessaires pour remplacer les réponses.

Et voici ma configuration mod_proxy:

<IfModule mod_proxy.c> 
     #turning ProxyRequests on and allowing proxying from all may allow 
     #spammers to use your proxy to send email. 

     ProxyRequests Off 

     <Proxy *> 
       AddDefaultCharset off 
       Order deny,allow 
       Deny from all 

       # Proxies just in case Proxy_ok is set 
       Allow from env=proxy_ok 
     </Proxy> 

     # Not sure whether we need this ... 
     # Enable/disable the handling of HTTP/1.1 "Via:" headers. 
     # ("Full" adds the server version; "Block" removes all outgoing Via: headers) 
     # Set to one of: Off | On | Full | Block 
     ProxyVia On 
</IfModule> 

Il peut y avoir des solutions plus propres, mais - si les travaux comme il se doit.

Questions connexes