Proxy todos os pedidos de subdomínio para um ip via htaccess / apache

3

Digamos que eu tenha o seguinte subdomínio com sua própria raiz de documento, etc:

monad2.mysite.com

Eu quero que todas as solicitações sejam intermediadas por proxy para um IP (por exemplo, 193.159.3.129 ), mas elas devem passar pelo servidor em mysite.com (assumindo que monad2 esteja no mesmo servidor).

Eu tenho a seguinte configuração (htaccess), que funciona até o subdomínio, mas não proxy qualquer outra solicitação ...

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://193.159.3.129/$1 [P]

Meu problema é que, embora funcione para http://monad2.mysite.com/a.php (o url permanece o mesmo), ele não funciona com solicitações como http://monad2.mysite.com/a/b (a url é convertida em http://193.159.3.129/a/b ). Observe que o último endereço mostra uma listagem de diretórios do servidor proxy, o que é correto, exceto que o subdomínio foi alterado para ip.

Além disso, presumo que este sistema definitivamente não funcionará para solicitações HTTPS, correto?

Editar: Depois de mais alguns problemas, descobri exatamente quando o problema está sendo causado. Sempre que tento acessar um diretório sem a barra final, o proxy falha e acabo com um IP. Algum exemplo:

Original                        | Result
--------------------------------+--------------------------------
http://monad2.mysite.com        | http://monad2.mysite.com
http://monad2.mysite.com/a/     | http://monad2.mysite.com/a/
http://monad2.mysite.com/a      | http://193.159.3.129/a/           <- !
http://monad2.mysite.com/a.php  | http://monad2.mysite.com/a.php
    
por Christian 17.03.2012 / 17:55

1 resposta

4

Você precisa de ProxyPassReverse - ele captura Location campos nos cabeçalhos de resposta e os altera para que o cliente continue falando com o proxy, em vez do servidor de back-end.

ProxyPass e ProxyPassReverse não podem estar em um arquivo .htaccess . Portanto, substitua sua regra de regravação atual por essa, que deve estar dentro do bloco <VirtualHost> do subdomínio:

ProxyPass / http://193.159.3.129/
ProxyPassReverse / http://193.159.3.129/

Como um aparte: não use .htaccess quando puder evitá-lo. Revise a documentação do Apache sobre o assunto .

In general, you should only use .htaccess files when you don't have access to the main server configuration file.

    
por 18.03.2012 / 19:25