Mudanças entre as edições de "Usuário:Nelson:Webserving01"
(→Configurando Apache) |
m (Foram revertidas as edições de 188.92.75.82 (disc) para a última versão por Ewout) |
||
(2 edições intermediárias de 2 usuários não apresentadas) | |||
Linha 1: | Linha 1: | ||
− | + | ====Configurando Apache==== | |
+ | |||
+ | =====Fazendo Rewrite com Proxy===== | ||
+ | |||
+ | Oque acontece neste cenario? | ||
+ | |||
+ | [[Imagem:Apache_proxy.jpeg|thumb|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 ''<nowiki>http://www.seusite.com.br/<sua_requisição></nowiki>'' 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 ''<nowiki>www.seusite.com.br</nowiki>''. Estas regras de ''rewriting'' fazem este trabalho. | ||
+ | |||
+ | O Usuário final irá requisitar o site ''<nowiki>http://www.seusite.com.br/<sua_requisição></nowiki>''. Quando esta chega ao apache de 192.168.60.3 a requisição é re-escrita como ''<nowiki>http://192.168.90.2/outrosite/<sua_requisição></nowiki>'' 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 ''<nowiki>http://www.seusite.com.br/</nowiki>'' 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 ''<nowiki>www.seusite.com.br</nowiki>'' 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/''. | ||
+ | |||
+ | <pre> | ||
+ | <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> | ||
+ | </pre> | ||
+ | |||
+ | 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. | ||
+ | ''<nowiki>http://servidor-s2/ss2/</nowiki>'' e ''<nowiki>http://servidor-s3/ss3/</nowiki>'' devem aparecer como ''<nowiki>http://www.seuprincipal.inf.br/ss2/</nowiki>'' e ''<nowiki>http://www.seuprincipal.inf.br/ss3/</nowiki>'' respectivamente. | ||
+ | |||
+ | servidor-s1 192.168.10.2<br> | ||
+ | servidor-s2 192.168.20.3<br> | ||
+ | servidor-s3 192.168.30.4 | ||
+ | |||
+ | <pre><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> </pre> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ======Links Úteis====== | ||
+ | http://httpd.apache.org/docs/1.3/mod/index-bytype.html<br> | ||
+ | http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html<br> | ||
+ | http://httpd.apache.org/docs/1.3/mod/mod_proxy.html<br> | ||
+ | http://httpd.apache.org/docs/1.3/misc/rewriteguide.html<br> | ||
+ | http://httpd.apache.org/docs/2.0/mod/mod_proxy.html<br> |
Edição atual tal como às 09h45min de 30 de julho de 2010
[editar] Configurando Apache
[editar] Fazendo Rewrite com Proxy
Oque acontece neste cenario?
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>
[editar] 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