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: 14.284 ]

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

OUTGUESS: Oculte mensagens em fotos

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

PHP Server Monitor - Monitore URLs e IPs

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

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

Leitura recomendada

Newsbeuter Feed Reader - Instalação e configuração

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

Configurando o a1200i Motorola Motoming para acessar internet em seu Linux Slackware

Compartilhamento de Internet via NAT/DHCP (Speedy Home)

VPN - PPTP Cliente no Slackware 10.2

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts