2010-04-05 5 views
1

Я пытаюсь использовать mod_rewrite для сопоставления нескольких доменов с разными сервлетами на одном хосте. Пример:Apache mod_rewrite и несколько доменов

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

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

Я использую директивы mod_rewrite и mod_proxy и VirtualHost, но кажется, что обратное сопоставление через ProxyPassReverse не работает так, как я ожидал.

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

не работает. Я повернулся переписывания-регистрацию на с

RewriteLog /var/log/rewrite.log 

Из журналов я бы сказал, что переписывания работы и проблема, как представляется, с обратным отображением. Однако я не вижу никаких записей обратного отображения. Кажется, что обратное отображение не регистрируется или требуется другая команда для активации. (Apache и контейнер сервлетов находятся на разных машинах, но это не имеет значения, я думаю?)

ответ

2

В конце концов, я нашел решение, которое работает на меня. Это отрывок из моей конфигурации, которая показывает один виртуальный хост для домена 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> 

Что было не так с моей первой конфигурацией - я должен был сохранить хозяин, а затем добавить все необходимые правила ProxyPassReverse подменять ответы.

И это моя 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> 

Там могут быть чистые решения, но - если работает, как надо.

Смежные вопросы