• Olá Visitante, se gosta do forum e pretende contribuir com um donativo para auxiliar nos encargos financeiros inerentes ao alojamento desta plataforma, pode encontrar mais informações sobre os várias formas disponíveis para o fazer no seguinte tópico: leia mais... O seu contributo é importante! Obrigado.
Portal Chamar Táxi

Aumente a performance do apache com o nginx

maar3amt

Administrator
Team GForum
Entrou
Set 19, 2006
Mensagens
7,819
Gostos Recebidos
53
Esta será uma excelente conjunção para sites com elevado tráfego de utilizadores, onde os administradores tenham problemas com o desempenho do apache devido ao elevado número de query's.


Esta técnica passa pelo uso do mod_proxy do apache para fazer com que o nginx (servidor web ultra-lihght) sirva aos utilizadores as imagens do site, blog ou forum aliviando assim as query's do apache.



Instalar o nginx
(válido para redhat e centos)

O nginx não vem por defeito activo no sitema de pacotes base do sistema, vamos activar os pacotes "EPEL" com o seguinte comando.



rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/$(uname -m)/epel-release-5-3.noarch.rpm

Uma vez a instalação finalizada poderemos agora utilizar o yum para instalar o nginx através do comando.

yum install nginx

Se a instalação do nginx correr sem problemas deverá aprecer um scree idêntico a este na shell.


Loaded plugins: downloadonly, fastestmirror, priorities, protectbase
Loading mirror speeds from cached hostfile
* epel: archive.linux.duke.edu
* base: ftp.linux.ncsu.edu
* updates: centos.mirror.nac.net
* addons: mirror.cs.vt.edu
* extras: centos.mirror.nac.net
0 packages excluded due to repository protections
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package nginx.x86_64 0:0.6.34-1.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved


==============================================================================================================================================================

Package Arch Version Repository Size
==============================================================================================================================================================
Installing:
nginx x86_64 0.6.34-1.el5 epel 319 k

Transaction Summary

==============================================================================================================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total size: 319 k

Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : nginx [1/1]

Installed: nginx.x86_64 0:0.6.34-1.el5

Complete!

Ok, como o nosso objectivo passa por servir unicamente imagens e nada de conteúdo dinâmico com o nginx, vamos agora configurar o mesmo para o devido efeito.


vi /etc/nginx/nginx.conf

server {

listen 8080;
server_name localhost;

#charset koi8-r;


#access_log logs/host.access.log main;


location ~* ^.+.(jpe?g|gif|png|ico)$ {

expires 30d;
root /pasta/root/imagens;
}

#error_page 404 /404.html;


# redirect server error pages to the static page /50x.html

#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80

#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

Ok é só guardar a configuração e reiniciar o nginx.

service nginx restart

Com o nginx instalado e configurado chega a vez de configurar o apache para usar o mod_proxy.


Editar o httpd.conf


vi /etc/httpd/conf/httpd.conf

Vamos activar os módulos necessários para o correcto funcionamento de comunicação entre os dois servidores web.


Remover o # dos seguintes módulos

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so

Adicione as configurações no fundo do httpd.conf (em caso de não usar virtualhosts).


ProxyRequests Off
ProxyPreserveHost On
ProxyPass /pasta/imagens Gforum - Digital
ProxyPassReverse /pasta/imagens Gforum - Digital

A configuração acima diz ao apache que todos os pedidos na pasta de imagens irá ser processada em Gforum - Digital que por sua vez é respondida pelo servidor nginx.

Ps. Aconselho a que a utilização desta técnica seja só aplicada em servidores com extremo volume de tráfego e com muitas imagens.
 
Topo