Para quem não sabe, o Nginx é o HTTP server que mais cresce em todo mundo, isso porque ele é leve, rápido e mais seguro, por enquanto, que o Apache. Não há o que discutir quando o seu site, portal ou blog precisa de performance, mude de Apache para Nginx e o seu ambiente ficará no mínimo 4x mais rápido.
Vejam o gráfico quanto a utilização dos servidores HTTP em todo o mundo:
Mas nem tudo são flores e o objetivo do curso será apresentar os diferentes cenários e possibilidades de utilização que o Nginx poderá trabalhar em conjunto com outros produtos como WebLogic, WebSphere, Jboss, Apache e o Varnish.
Varnish é uma das melhores e mais utilizadas soluções de cache do mercado. Globo.com, R7 e tantos outros portais utilizam-no para melhorar a performance e a segurança de seus ambientes, mas sempre fica a pergunta, quais são as melhores configurações para rodar um site estático, um dinâmico, um blog ou até mesmo para assegurar o seu ambiente ?
Já é possível configurar uma série de regras no próprio Varnish para barrar os ataques Web mais comuns como SQL Injection e XSS, você sabia disso ?!
E o Apache ? Simples, ele é o servidor Http mais utilizado por causa dos seguintes pontos: compatibilidade, documentação e performance – ele é bem melhor que o IIS, diga-se de passagem.
O curso terá a duração de 3 sábados e ele será ministrado para até 10 pessoas na empresa 2work, que fica próxima de duas estações de metrô, São Bento e Anhangabaú. Então não percam tempo e faça logo a sua inscrição..
O treinamento será realizado nos seguintes dias 19/05, 26/05 e dia 02/06 (os últimos sábados do mês de maio e o primeiro do mês de junho) e ele será 100% hands-on.
Ementa do treinamento:
O que é e como funciona o Varnish, Apache e o Nginx ?
Instalando e configurando o Varnish + Apache + Nginx
Trabalhando só com o Nginx + WordPress, substituindo o .htaccess
Configurando o Varnish como frontend + Nginx como backend
Devo utilizar Nginx com ambientes JAVA ? sim, não e porque ?
Introdução ao Hardening no Varnish + Apache + Nginx.
Configurando o Apache e o Nginx com múltiplos virtualhosts
.Htaccess do Apache
Apache + segurança + wordpress
Teremos 1 coffee-break por dia de treinamento, onde cada dia terá uma carga horária máxima de 5 horas, começando às 10:00 e terminando às 15:00 — ninguém é de ferro, principalmente aos sábados.
Pre-requisitos para participar do treinamento:
conhecimentos em redes e Linux
é necessário que o aluno leve o seu próprio notebook com o centos e o debian/ubuntu instalados em uma máquina virtual
Endereço da 2work, onde o treinamento será realizado: Rua Líbero Badaró, 471 – 14 andar – Centro de São Paulo
O espaço possui internet banda larga e uma lista vista para o parque do Anhangabaú.
Será fornecido certificado de participação além de apostila com todo o material do curso.
O valor do investimento será de R$ 350,00, o qual poderá ser parcelado em até 12x, via PagSeguro.
Clique no link abaixo do PagSeguro para realizar o pagamento que poderá ser feito em até 12x
Varnish é um acelerador de requisições HTTP deixa seu site até 300x mais rápido!
Um serviço que fica entre o usuário e o servidor web, fazendo uma analise dos conteúdos mais acessados, armazenando um cache e efetuando gerência das páginas acessadas.
Características do Varnish
Alta performance
O Varnish foi desenvolvido especificamente para servir de proxy reverso para sistemas de gerenciamento de conteúdo ( CMS ) lentos. Não foram incluídas no Varnish funcionalidade extras normalmente encontradas em outros servidores de proxy, com suporte a diversos protocolos.
Foco 100% em performance, Kamp utilizou todo o seu conhecimento sobre o funcionamento do Kernel para fazer com que o Varnish trabalhe sempre junto com o Kernel, aproveitando suas qualidade de gerenciamento de memória ao máximo.
Capacidade de trabalhar em 32 ou 64 bits aproveitando ao máximo cada operação do processador. Kamp [12] contabiliza que o Varnish é capaz de responder a uma requisição Web utilizando aproximadamente 11 syscalls e 7 locks.
Multi-cpu e multi-core escalonando pools de threads por todos os núcleos, aproveitando toda a capacidade de processamento.
Os arquivos de configuração do Varnish são compilados e executados juntamente com a aplicação.
Execução em dois processos para garantir o reinício automático da aplicação em caso de falha.
Controle sobre cada passo na resposta às requisições
Possibilidade de sobrescrever o TTL dos pacotes, adicionar ou remover cabeçalhos, remover cookies, reescrever urls e invalidar objetos no cache.
Possui uma linguagem de configuração VCL, específica para configurações de domínio, possibilitando a intervenção em praticamente todas as fases do tratamento da requisição.
Permite a inserção de códigos C dentro de seus arquivos de configuração, de forma transparente. No site do sistema, inclusive, é possível se encontrar um método para interligar, através deste recurso, o sistema de proxy Varnish com a ferramenta de localização de IP’s GeoIP(1) para criar desta forma um balanceamento de carga geo referenciado.
Capacidade de trabalhar com múltiplos arquivos de configuração VCL, podendo inclusive carregar novos arquivos ou alternar entre diversas configurações em tempo de execução.
Suporte a balanceamento de carga inclusive com checagem da saúde dos servidores.
Mesmo após vencido o tempo de vida de um objeto em memória, o sistema permite se configurar um tempo de vida extra (grace) a objetos para que, caso o servidor Web não responda, este possa continuar atendendo as requisições sem paradas no serviço.
(1) – O GeoIP é uma API e banco de dados em GPL oferecidos pela empresa MaxMind e que possibilita a identificação do Pais e Cidade de um determinado IP com uma precisão de 99,5%.
Controle sobre o que deverá ser cacheado
Implementa parcialmente a tecnologia ESI, a qual permite se definir, no código da aplicação, como deverá funcionar o cache para as diversas partes de uma página Web. Com o uso desta tecnologia, é possível se definir propriedades de cache diferentes para partes diferentes de uma mesma página Web.
Diversas ferramentas de apoio e controle para o sistema de cache
Possui um conjunto de ferramentas em modo texto muito completo possibilitando uma fácil administração e monitoria do serviço.
Oferece uma interface telnet para um fácil gerenciamento da aplicação
Diversos módulos de gerenciamento Web
O Varnish possui um módulo próprio para gerenciamento de seu sistema Online bem como módulos para integração dele com o Webmin, Nagios e Munin.
Log centralizado em memória
A fim de evitar chamadas para gravação em disco desnecessárias, todo o gerenciamento do log é feito em memória.
O sistema oferece ferramentas completas para visualização do log de formas variadas permitindo uma análise profunda do seu funcionamento.
Serviço para armazenamento do log em disco em um formato compatível com o Apache / NCSA para integração com outras ferramentas como o Awstats2.
Linguagem VCL
Uma das características mais importantes do Varnish é a flexibilidade no tratamento das requisições através de uma linguagem específica para tratamento de domínios VCL (Linguagem de Configuração do Varnish).
Exemplo de configuração para um blog WordPress.
backend default {
.host = “127.0.0.1”; # Ip e porta do servidor Web
.port = “80”;
}
# Apagar todos os cookies que o cliente enviar para o servidor quando a url contiver wp-login ou wp-admin
sub vcl_recv {
if (!(req.url ~ “wp-(login|admin)”)) {
unset req.http.cookie;
}
}
# Apagar todos os cookies que servidor tentar enviar para o cliente nas mesmas condições
sub vcl_fetch {
if (!(req.url ~ “wp-(login|admin)”)) {
unset obj.http.set-cookie;
}
}
Como pode se perceber no exemplo acima, a configuração do Varnish é bastante simples e efetiva. Uma descrição completa da linguagem VCL fugiria do escopo deste trabalho, mas, de forma resumida, ela pode ser descrita como a declaração de um ou mais serviços Web “backend” e a configuração das funcionalidades utilizando para isto um modelo de ganchos “hooks”, em que é possível se inserir códigos configurando diversas etapas no atendimento às requisições. Schofmann [10] destaca dentre os ganchos principais da linguagem VCL:
vcl_recv – Recebe a requisição do cliente e decide o que fazer.
vcl_fetch – Chamado após um documento ser recebido com sucesso do servidor Web.
vcl_deliver – Chamado antes de enviar um objeto do cache para o cliente.
vcl_hash – Calcula a chave de hash para identificar os objetos no cache, o padrão é a URL.
vcl_miss e vcl_hit – Chamados quando o Varnish identifica “hit” ou não “miss” uma requisição com um objeto em cache.
vcl_error – Chamado quando é identificado um erro na resposta à requisição
vcl_discard – Chamado quando um objeto esta prestas a ser descartado.
vcl_timeout – Chamado quando um documento em memória expira.
vcl_pipe ou vlc_pass – Chamados quando o proxy deve ignorar as comunicações entre o servidor Web e o cliente em uma determinada condição.
Edge Side Includes – ESI
Para cada requisição de página html, sistemas de proxy reverso devem decidir entre obter o documento do servidor Web ou entregar algum objeto de seu cache. Não existia porém uma forma de diferenciar partes diferentes de uma mesma página e dar tratamento diferenciado a certas regiões da página. Para resolver este problema, um grupo de empresas desenvolveu um padrão de instruções que permitisse realizar esta diferenciação chamado ESI(Edge Side Includes).
Em 2001, o padrão ESI foi submetido ao World Web Consotion (W3C) para sua aprovação. O instituto tomou conhecimento do padrão, porém não a aceitou a proposta enviada. Atualmente diversas empresas como a Akamai, o Oracle e a IBM, entre outras, aceitam e reconhecem este padrão.
O Varnish implementa somente a parte desta linguagem responsável pelo gerenciamento de políticas de cache. Segundo a página do projeto, ele implementa a tag <esi:include>. Esta permite que sejam inseridos trechos de uma página dentro de outra, para que este trecho seja incluído no momento em que a página for tratada pelo proxy.
Abaixo pode se observar o exemplo de aplicação ESI encontrado no site do projeto.
Um script cgi para mostrar um relógio – /cgi-bin/data.cgi
#!/bin/sh
echo ‘Content-type: text/html’
echo ”
date “+%Y-%m-%d %H:%M”
Um documento html – texto.html
<HTML>
<BODY>
A hora neste momento é: <esi:include src=”/cgi-bin/data.cgi”/>.
</BODY>
</HTML>
Uma regra para tratamento do arquivo ESI:
sub vcl_fetch {
if (req.url == “/texto.html”) {
esi; /* Fazer processamento ESI */
set obj.ttl = 24 h;
} elseif (req.url == “/cgi-bin/data.cgi”) {
set obj.ttl = 1m;
}
}
Ferramentas do Varnish
O Varnish possui um conjunto completo de ferramentas em modo texto para o gerenciamento e monitoração da qualidade de seu serviço. Dentre as ferramentas oferecidas destacamos:
VarnishHist – Este utilitário cria um gráfico, em tempo real, mostrando o fluxo de requisições atendidas pelo Varnish. As requisições respondidas com objetos do cache são representadas com um “|” e as repassadas para o servidor Web com um “#”. Na linha inferior do gráfico é possível ver uma régua de tempo possibilitando uma visualização imediata das requisições atendidas e seu tempo de resposta.
Gráfico gerado pelo VarnishHist
VarnishStat – Um poderoso aplicativo que apresenta, em tempo real, em uma única tela, a visualização completa de todas as estatísticas do Varnish. Sua utilização permite o monitoramento, de forma dinâmica, do funcionamento do Varnish em seus diversos aspectos.
Interface de administração Web
Além de todas as ferramentas em modo shell e do ambiente telnet para gerenciamento da ferramenta, o Varnish ainda oferece um módulo completo de interface Web. Dentre os recursos desta interface destacamos:
O sistema oferece gráficos em tempo real das estatísticas de cache do proxy.
Gerenciamento de múltiplos servidores Varnish.
Edição e carga e arquivos de configuração VCL.
Acesso ao modo console telnet através de uma página do sistema.