Se você precisa balancear a carga em seu webserver e não tem (ou não pode usar) um hardware dedicado para isso, segue alguns exemplos práticos:

Apache httpd:

NameVirtualhost *:80
<VirtualHost *:80>
    ServerName everlinux-homolog.com
    ServerAlias 200.24.12.34 10.10.23.53 10.10.23.56
    ServerAdmin suporte@everlinux.com
    ErrorLog "|/usr/sbin/rotatelogs /var/log/httpd/error_log.%Y%m%d 86400 -180"
    CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/access_log.%Y%m%d 86400 -180" combined
 
        <Proxy balancer://everhttp>
          BalancerMember http://10.10.23.53:80/ ping=10
          BalancerMember http://10.10.23.56:80/ ping=10
        </Proxy>
 
ProxyPreserveHost on
ProxyPass / balancer://everhttp/
ProxyPassReverse /oii balancer://everhttp/
 
</VirtualHost>

Nginx

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  50;
 
      upstream everbalance {
         ip_hash;
         server 10.10.23.53 max_fails=3 fail_timeout=30s;
         server 10.10.23.56 max_fails=3 fail_timeout=30s;
         }
 
    server {
         listen  202.34.52.24:80;
         server_name  everlinux-homolog.com;
         location /
           {
            access_log   /var/log/nginx/hdig.log;
            proxy_pass   http://everbalance;
            proxy_set_header Host $host;
           }
         }
}

As linhas “ProxyPreserveHost on” (apache) e “proxy_set_header Host $host;” (nginx) são importantes caso sua aplicação trabalhe com o nome do domínio da URL para montar alguma coisa dinamicamente. Conteúdo estático geralmente não é necessário estas variáveis.

Leave a Reply