Usuário:Nelson:Webserving01

De Stoa
Ir para: navegação, pesquisa

Configurando Apache

Fazendo Rewrite com Proxy

Oque acontece neste cenario?

Sequencia de pedido 1 e 2 e resposta 3 e 4.

Voce tem um apache no IP 192.168.60.3, no qual você configura vários VirtualHost. Num dos VirtualHost que você define como www.seusite.com.br ( deve ter este nome como entrada cname ao nome dado ao Host no DNS ).

Quando o navegador buscar o nome vai cair no IP indicado pelo servidor DNS, mas na URL passada para o apache vai chegar como http://www.seusite.com.br/<sua_requisição> com isso o apache usa a configuração abaixo de VirtualHost, fazendo log nos arquivos especificados. Existe também um outro site em outro servidor com IP 192.168.90.2 com um subdiretorio /outrosite/ que deve ser apresentado como sendo de www.seusite.com.br. Estas regras de rewriting fazem este trabalho.

O Usuário final irá requisitar o site http://www.seusite.com.br/<sua_requisição>. Quando esta chega ao apache de 192.168.60.3 a requisição é re-escrita como http://192.168.90.2/outrosite/<sua_requisição> e a requisição enviada para o IP 192.168.90.2. Esta máquina responde a requisição para o IP 192.168.60.3 que por sua vez reescreve a resposta precedendo com a string http://www.seusite.com.br/ e envia a resposta ao usuário final.

Para o usuário final o servidor que responde a todas as suas requisições é o site www.seusite.com.br que está no IP 192.168.60.3 mas na verdade a máquina que faz todos os processamentos e detém o conteúdo é o servidor no IP 192.168.90.2 dentro da URI /outrosite/.

 <VirtualHost 192.168.60.3>
    ServerAdmin webmaster@seusite.com.br
    DocumentRoot /home/www/htdocs/seubarra
    ServerName www.seusite.com.br
    ErrorLog /var/log/apache/seusite_error_log
    CustomLog /var/log/apache/seusite_access_log combined
    # Atencao o IP deste servidor externo deve ser permitido do iptables
    # Configuração testada para apache 1.3
    # Modulos carregados no VirtualHost Principal
    <IfModule mod_proxy.c>
       ProxyRequests Off
       RewriteEngine on
       RewriteRule ^/outrosite$              / [R=permanent]
       RewriteRule (.*)          to://192.168.90.2/outrosite/$1
       RewriteRule ^to://([^/]+)/(.*)  http://$1/$2 [E=SERVER:$1,P,L]
       ProxyPassReverse /       http://192.168.90.2/outrosite/
    </IfModule>
 </VirtualHost>

Mais um cenário: tenho servidor-s1 com um VirtualHost www.seuprincipal.inf.br com servidor-s2 e servidor-s3 com conteúdo web para serem mostrados como subdiretório em seu VirtualHost. http://servidor-s2/ss2/ e http://servidor-s3/ss3/ devem aparecer como http://www.seuprincipal.inf.br/ss2/ e http://www.seuprincipal.inf.br/ss3/ respectivamente.

servidor-s1 192.168.10.2
servidor-s2 192.168.20.3
servidor-s3 192.168.30.4

<VirtualHost 192.168.10.2>
 ServerAdmin webmaster@servidor-s2
 DocumentRoot "/home/www/htdocs"
 ServerName www.seuprincipal.inf.br
 ServerAlias servidor-s1.inf.br
 <IfModule mod_proxy.c>
 ProxyRequests off
 RewriteEngine on
 RewriteLog "/var/log/apache/rewrite_seuprincipal.log"
 RewriteLogLevel 1
 # linhas do rewrite+proxy servidor-s2
 RewriteRule ^/ss2$              /ss2/ [R=permanent]
 RewriteRule ^/ss2/(.*)        to://192.168.20.3/ss2/$1
 RewriteRule ^to://([^/]+)/(.*)  http://$1/$2 [E=SERVER:$1,P,L]
 ProxyPassReverse /ss2/     http://192.168.20.3/ss2/
 # linhas do rewrite+proxy servidor-s3
 RewriteRule ^/ss3$              /ss3/ [R=permanent]
 RewriteRule ^/ss3/(.*)        to://192.168.30.4/ss3/$1
 RewriteRule ^to://([^/]+)/(.*)  http://$1/$2 [E=SERVER:$1,P,L]
 ProxyPassReverse /ss3/     http://192.168.30.4/ss3/
 # mais outras se for o caso
 </IfModule>
</VirtualHost> 




Links Úteis

http://httpd.apache.org/docs/1.3/mod/index-bytype.html
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
http://httpd.apache.org/docs/1.3/mod/mod_proxy.html
http://httpd.apache.org/docs/1.3/misc/rewriteguide.html
http://httpd.apache.org/docs/2.0/mod/mod_proxy.html

Ferramentas pessoais

Variantes
Ações
Navegação
Imprimir/exportar
Ferramentas