Instalação do Varnish + Apache + Virtual Hosts

Varnish é uma aplicação Proxy Cache Reverso, utilizada em servidores e aplicações Web, para acelerar a resposta de requisições HTTP. Vamos
instalar o Varnish para trabalhar em conjunto com o Apache, suportando multidomínios (Virtual Hosts). Este Artigo é focado na prática, e tem apenas
as configurações básicas para o funcionamento de um servidor Web.

[ Hits: 12.991 ]

Por: Leonardo Macedo Cerqueira em 28/09/2012 | Blog: http://devopslab.com.br/


Instalação do Varnish



Sistemas operacionais:
  • CentOS 6.3 - x86_64
  • Red Hat Enterprise Linux 6.3 - x86_64

Site do Projeto Varnish:
Primeiramente, instale a última Versão do Varnish. Pegue nos repositórios oficiais:

Repositório:
Instale os pacotes mais atuais, hoje são os:
  • varnish-libs-3.0.3-1.el6.x86_64.rpm
  • varnish-3.0.3-1.el6.x86_64.rpm

Instalação

# rpm -hiv varnish-libs-3.0.3-1.el6.x86_64.rpm varnish-3.0.3-1.el6.x86_64.rpm

Opcionalmente, você pode instalar o pacote de docs, que é muito interessante para um aprofundamento no Varnish.

# rpm -hiv varnish-docs-3.0.3-1.el6.x86_64.rpm

Configuração do Varnish com Apache e Multidomínios (virtual host)

Como o Varnish vai atuar como um proxy reverso, ou seja, vai fazer um cache das requisições, para consecutivamente responder mais rápido. O Varnish precisa escutar a porta 80 do Apache.

Altere a porta padrão do Varnish, e mude para a porta 80. Mude a diretiva LISTEN e deixe ouvindo a porta 80.

Altere o arquivo: /etc/sysconfig/varnish

VARNISH_LISTEN_PORT=80


Com o Varnish instalado e escutando na porta 80, adicione a quantidade de domínios que achar necessário.

Os domínios no Apache não pode utilizar a porta 80, pois ela agora é do Varnish.

Você precisa usar qualquer outra porta, eu utilizei a porta 81 no Apache, mas pode ser qualquer porta livre no sistema.

No arquivo: /etc/varnish/default.vcl

Adicione os domínios:

# X.X.X.X é o seu IP, na qual os sites responderão. Se for um teste interno, é um IP privado, se for uma máquina na Internet, é um IP público (IP válido).
# Isto quer dizer que quando for digitado no navegador site-exemplo1.com ou www.site-exemplo1.com, o site vai ser tratado pelo proxy reverso Varnish.


/etc/varnish/default.vcl
#exemplo1
# As definições abaixo diz que quando for digitado no navegador "site-exemplo1.com" ou "www.site-exemplo1.com", o site vai ser tratado pelo proxy reverso Varnish.

# site-exemplo1

backend exemplo1 {
         .host = "X.X.X.X";
         .port = "81";
    }

sub vcl_recv {
if (req.http.host ~ "(?i)^(www.)?site-exemplo1.com$") {
         set req.backend = exemplo1;
         return (lookup);
    }
}
# fim site-exemplo1

# site-exemplo2

backend exemplo2 {
         .host = "X.X.X.X";
         .port = "81";
    }

sub vcl_recv {
if (req.http.host ~ "(?i)^(www.)?site-exemplo2.com$") {
         set req.backend = exemplo2;
         return (lookup);
    }
}
# fim site-exemplo2

#...
# site-exemploN
...
# fim site-exemploN


Bom, o Varnish já está configurado, agora basta você criar um virtual host no Apache e colocar no ar.

Em uma instalação default do Apache, do tipo:

# yum install httpd

O Apache, por padrão, vai escutar na porta 80, então, altere a porta padrão para uma porta de sua preferência. Aqui neste tutorial, nós estamos utilizando a porta 81.

No arquivo: /etc/httpd/conf/httpd.conf

Deixe a diretiva Listen:

Listen 81


Criar um virtual host

A pasta "Include", padrão do Apache, é a /etc/httpd/conf.d/, nesta pasta nós vamos criar um virtual host.

Para confirmar a pasta Include:

# grep -i Include /etc/httpd/conf/httpd.conf

Deve vir algo como:
Include conf.d/*.conf
/etc/http/conf.d/site-exemplo.conf

NameVirtualHost 192.168.1.179:81
<VirtualHost 192.168.1.179:81>
       # Nome do dominio
       ServerName www.site-exemplo.com
       ServerAlias site-exemplo.com
       DocumentRoot /var/www/html/pasta-site-exemplo
</VirtualHost>


Definimos que a pasta /var/www/html/pasta-site-exemplo,é onde ficará os arquivos do site. Suba algum site de teste, ou qualquer coisa (um index.html, já resolve).

Sendo assim:
  1. Configuramos o Varnish para escutar na porta 80, e tratar as requisições HTTP.
  2. Adicionamos virtual host no Varnish, para escutar na porta 81.
  3. Configuramos o Apache para escutar na porta 81 e definimos um virtual host no Apache.

Para finalizar, vamos reiniciar o Apache e o Varnish:

# /etc/init.d/varnish restar
# /etc/init.d/varnishlog restart
# /etc/init.d/varnishncsa restart
# /etc/init.d/httpd restart


Configuramos uma instalação básica do Varnish + Apache + Virtual hosts. Para um melhor aprofundamento, leiam o man do Varnish, pois é rico em otimizações.

Visite também o site oficial do projeto:
É isto aí pessoas.
Abraço.

   

Páginas do artigo
   1. Instalação do Varnish
Outros artigos deste autor

Instalação do Gitlab e introdução ao Git

PHP Server Monitor - Monitore URLs e IPs

Discos Virtuais na Amazon WS - Como expandir disco EBS em servidores virtuais Amazon WS

OUTGUESS: Oculte mensagens em fotos

Vsftp - Instalação de um servidor FTP focado em segurança

Leitura recomendada

Instalação do serviço de NTP (servidor de tempo) no Debian

WIMAX (parte 1)

Conectividade Social vs. proxy Squid transparente

Certificado Digital e diversos ambientes Java no GNU/Linux

Configuração de rede para RedHat e similares utilizando VI/Emacs/etc

  
Comentários
[1] Comentário enviado por danniel-lara em 29/09/2012 - 19:38h

muito bom parabéns

[2] Comentário enviado por bavaresco1 em 30/06/2016 - 11:51h

Excelente, porém pra mim está defasado...para versões mais novas do varnish. Alguém tem uma versão atualizada desta configuração com multi backends para o Varnish 4.1?

[3] Comentário enviado por cROMADO em 03/07/2016 - 17:37h

@bavaresco1 obviamente o artigo está defasado, ele é de 2012 e você está lendo ele em 2016.
Porém segue o caminho das pedras, o básico para você se situar. Resumidamente são 2 passos.

1. Definição dos servidores/nós de backend.

#Definição do Backend (servidores do cluster).
backend server1 {
.host = "server1.devopslab.com.br";
.port = "80";
}
backend server2 {
.host = "server2.devopslab.com.br";
.port = "80";
}

#definição do cluster/loadbalancer
director clusterbackend round-robin {
{ .backend = server1; }
{ .backend = server2; }
}
#Você pode definir N backends.
# Foi utilizado o algoritmo round-robin, mas o Varnish aceita outros tipos de balanceamento, como o de persistência de sessão.

2. Definição das urls, regex, redirects e etc.
#
sub vcl_recv {
if (req.http.host == "meusite.com.br" || req.http.host == "www.meusite.com.br") {
set req.backend = clusterbackend;
}
}

Você pode colocar esta configuração em um único arquivo .vcl, ou separar em vários .vcls.
Eu por exemplo uso um arquivo só para os servidores e clusters.
E outro apenas para urls, regex, e redirects.

Se for separar as configurações, você precisa colocar um "include" no arquivo de configuração principal do varnish, como este:
include "/etc/varnish/backends-servers.vcl";

Att,


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts