Apache: proxy reverso de todo o domínio

5

Eu fiz a mesma pergunta há algum tempo, mas acho que não coloquei a minha pergunta corretamente. Eu estou tentando inverter proxy todo um domínio de host virtual para um subdiretório de outro host virtual, algo como este link - > link .

O arquivo de site padrão do Apache é este

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName "host1.com"

    <Directory /srv/www/host1>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order deny,allow
        Allow from all
    </Directory>

    DocumentRoot /srv/www/host1
    WSGIScriptAlias / /srv/www/host1/apache/django.wsgi

</VirtualHost>

<VirtualHost *:80>

    ServerAdmin webmaster@localhost
    ServerName "host2.com"
    ProxyRequests Off

    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>

    ProxyPass / http://host1.com/host2
    ProxyPassReverse / http://host1.com/host2

 </VirtualHost>

Neste momento, o problema é que sempre que eu vou para o link , ele me mostra link em vez de link . o que estou perdendo? Não tenho certeza se isso deve ser importante, mas o host1 é hospedado usando o Django com o wsgi.

    
por Neo 31.03.2011 / 07:36

1 resposta

6

ProxyPass é muito exigente quanto a barras; já que você está fazendo o proxy de uma barra à direita (apenas a raiz, / ), você desejará fazer proxy para uma barra final.

Portanto, adicionar algumas barras finais aos seus alvos, como abaixo, deve ajudar.

Além disso, como o dispositivo que você está fazendo proxy também é o sistema local, é possível evitar a possível confusão de resolução de nomes / NAT usando 127.0.0.1. O que você coloca aqui não tem relação com o cabeçalho do host recebido pelo servidor, e o cabeçalho do cliente é passado, contanto que você tenha ProxyPreserveHost On set:

ProxyPreserveHost On
ProxyPass / http://127.0.0.1/host2/
ProxyPassReverse / http://127.0.0.1/host2/

Se isso não funcionar, talvez o host2 sirva uma página de conteúdo temporário para verificar se você está acessando o vhost correto.

Nota lateral, você não quer esse bloco <Proxy *> . Ele foi criado para quando você está executando no modo ProxyRequests on e não funciona como desejado para proxies reversos (use <Location> para controle de acesso)

    
por 31.03.2011 / 07:57