Habilitando o módulo Google PageSpeed no Nginx
- 6 anos atrás
- Labs
- Nenhum comentário
- Facebook | 0
- Twetar | 0

TL; DR
Trabalhar com Nginx é realmente fascinante, com o server rodando e sem muitas configurações personalizadas já se pode notar o quanto o desempenho melhora se comparado ao Apache, seu maior concorrente. O nginx é estável e consome bem menos recursos que os seus semelhantes. Você pode ver alguns testes de benchmark aqui e aqui.
O módulo Google PageSpeed acelera o seu site reduzindo o tempo de carregamento. O módulo aplica as melhores práticas de desempenho web nas páginas e nos recursos (CSS, JS e imagens) sem exigir que você modifique o seu conteúdo ou o seu fluxo de trabalho. É possível fazer através do Google PageSpeed:
- Otimização de imagens: remoção de meta-data, redimensionamento dinâmico, recompressão;
- Minificação, concatenação, inlining e outlining de CSS e Javascript
- Inlining de estáticos pequenos
- Lazy load de imagens e javascripts
- Reescrita de HTML
- Melhoria nos caches
- Além de diversas outras funcionalidades
Se você estiver realmente interessado em obter excelentes resultados o primeiro passo pode ser justamente esse: Ter o módulo Google PageSpeed no Nginx. Infelizmente essa união é um pouco dificultada pelo próprio nginx que não possui suporte ao que podemos chamar de módulos dinâmicos, ou seja, ele não permite que após a instalação seja adicionado um módulo complementar. A única forma de adicionar esses módulos ao nginx é durante o processo de compilação. Vamos apresentar um método simples que usa o apt-get do debian/ubuntu para chegar ao resultado.
Baixando os requisitos
Mencionar a versão do ubuntu 14.04. Testei em versão anteriores mas a versão no repositorio do ubuntu era muito antiga.
Iremos baixar a build-dep do nginx e mais alguns itens para que a compilação seja feita de forma correta.
$ sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
$ sudo apt-get -y install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip curl
$ sudo apt-get -y build-dep nginx
VER CÓDIGO COMPLETOFeito o procedimento inicial damos inicio ao download do nginx na pasta home, para facilitar a localização, e em seguida faremos o download do PageSpeed já dentro do pasta de módulos do nginx. No momento que estou escrevendo esse texto estamos nas versões 1.4.6 do Nginx e 1.9.32.3 do Google PageSpeed
$ sudo mkdir /usr/local/src/nginx_modules
$ cd /usr/local/src/nginx_modules
$ sudo apt-get source nginx
$ cd nginx-1.4.6/debian/modules
$ sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.9.32.3-beta.zip
$ sudo unzip release-1.9.32.3-beta.zip
$ cd ngx_pagespeed-release-1.9.32.3-beta/
$ sudo wget https://dl.google.com/dl/page-speed/psol/1.9.32.3.tar.gz
$ sudo tar -xzvf 1.9.32.3.tar.gz
VER CÓDIGO COMPLETOPreparando a compilação
Agora que o módulo do google está no lugar certo editaremos o arquivo rules.
Nesse arquivo modificaremos os blocos config.status (config.status.core, config.status.full, config.status.light, config.status.extras, config.status.naxsi). Para cada um desse itens colocaremos a instrução --add-module=$(MODULESDIR)/ngx_pagespeed-release-1.9.32.3-beta \
logo antes do >$@
$ cd /usr/local/src/nginx_modules
$ sudo cp nginx-1.4.6/debian/rules nginx-1.4.6/debian/rules-bkp
$ sudo nano nginx-1.4.6/debian/rules
VER CÓDIGO COMPLETOOlha como um dos blocos ficou:
Iremos alterar também o changelog para que possamos melhor identificar o pacote mais tarde.
$ sudo nano nginx-1.4.6/debian/changelog
VER CÓDIGO COMPLETOLogo após o numero da versão na 1º linha podemos colocar o identificador que acharmos melhor. No meu caso coloquei 1.4.6-1ubuntu3.2-devim
Devendo ficar algo como:
Compilando o pacote
Iremos agora criar o pacote através do buildpackage. Esse processo poderá demorar um pouco então aguarde até o terminal ficar operativo novamente.
$ cd /usr/local/src/nginx_modules/nginx-1.4.6/
$ sudo dpkg-buildpackage -b
VER CÓDIGO COMPLETOAgora que os pacotes foram gerados vamos dar uma olhada no resultado:
$ cd ~/nginx/
$ ls -1
VER CÓDIGO COMPLETOInstalando o Nginx
Faremos a instalação do pacote full, common e o all
$ sudo dpkg -i nginx-full_1.4.6-1ubuntu3.2-devim_amd64.deb nginx-common_1.4.6-1ubuntu3.2-devim_all.deb nginx_1.4.6-1ubuntu3.2-devim_all.deb
VER CÓDIGO COMPLETOPodemos verificar que o nginx foi instalado com sudo nginx -V
assim como também podemos ver que o modulo pagespeed está listado junto com os outros módulos.
Execute sudo update-rc.d nginx defaults
para reiniciar automaticamente o nginx no caso do servidor ser reiniciado.
Habilitando o módulo
Antes de ativar o módulo temos que criar uma pasta onde o nginx fará cache dos arquivos de seus sites:
$ sudo mkdir -p /var/ngx_pagespeed_cache
$ sudo chown -R www-data:www-data /var/ngx_pagespeed_cache
VER CÓDIGO COMPLETOEditaremos o arquivos de configuração do nginx
$ sudo nano /etc/nginx/nginx.conf
$ sudo service nginx restart
VER CÓDIGO COMPLETOE adicionaremos as seguintes linhas no bloco http. Você pode mudar o name
##
#ngx_pagespeed module settings
##
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
pagespeed XHeaderValue "GooglePageSpeed powered by [NAME]";
VER CÓDIGO COMPLETOPara confirmar que o pagespeed foi executado podemos fazer o seguinte teste:
$ curl -I -p http://localhost|grep X-Page-Speed
VER CÓDIGO COMPLETOPara evitar que o seu pacote seja substituído no futuro com um lançamento mais recente do nginx, você deve fixar seu pacote com um arquivo preferences.d através dos seguintes passos:
$ sudo nano /etc/apt/preferences.d/nginx
VER CÓDIGO COMPLETOE nele ter as seguintes instruções
Package: nginx
Pin: version 1.4.6-1ubuntu3.2-devim
Pin-Priority: 1001
VER CÓDIGO COMPLETOConclusão
Referências
- Compilando o nginx com módulo Pagespeed do Google do Bruno Souza
- How To Add ngx_pagespeed Module to Nginx in Debian Wheezy da DigitalOcean
- Build ngx_pagespeed From Source da Página Oficial do Módulo
Comentários