Nginx + Brotli = Aumenta a velocidade do teu site!

O Nginx tem vindo a crescer muito para sites com grandes volumes de tráfego. Sabemos que é importante para um site ter velocidade que deve conter certas coisas como por exemplo: cache, compressão e um bom Webserver, e o Nginx vêm auxiliar-nos nisto em bastantes vezes.

Nginx

Nginx é um código de Webserver aberto que funciona muito bem tanto no Ubuntu como no Centos. Apesar de que na minha opinião funcionar ainda melhor no Ubuntu Server, em especial o Ubuntu 18.04.

Brotli

O Brotli, é uma ferramenta de compressão criada pela google que já está disponível para o Nginx.

Esta ferramenta é comparativamente com o famoso “gzip” mais rápida em muitos aspectos por usar o parâmetro “br”, nos headers da compressão, e já que muitos navegadores aceitam este tipo de compressão o Brotli aumenta e muito a velocidade de um Website.

Nginx + Brotli

O Nginx no seu apt (no ubuntu) não vêm com o Brotli pré compilado, ou seja é necessário compilar o Nginx junto com o modulo do Brotli para Nginx, porém não é uma perda de tempo compilar o Nginx mesmo que sem o modulo visto que ao compilar o Nginx no próprio servidor existe um ganho em velocidade. Contudo apesar disto fiz vós o trabalho de casa ou pelo menos quase todo, criei um Shell Script que já compila o Nginx com o Brotli uma vez que tenham o Nginx já instalado no servidor, devo lembrar que usem com cautela pois neste Shell Script uso modulos que vocês talvez não precisem, e também podem precisar de algum que não esteja lá.

Sintam-se Livres para adaptar o código às vossas necessidades.

Shell Script

Cuidado: Antes de executar façam testes ao vosso servidor para verificar se podem executar o código ou se precisará de alterações, lembrem-se que este código foi feito à minha medida e não a vossa medida.

apt install -y rsync
rsync -a /etc/nginx/ /bk2-nginx/
rm -rf /etc/nginx/modules-enabled
cd /usr/local/src/
apt install -y build-essential zlib1g-dev libpcre3-dev libssl-dev libxslt1-dev libxml2-dev libgeoip-dev libgoogle-perftools-dev libperl-dev libpam0g-dev git
apt install -y gcc libpcre3-dev zlib1g-dev libssl-dev libxml2-dev libxslt1-dev  libgd-dev google-perftools libgoogle-perftools-dev libperl-dev
apt install -y php7.2-gd
cd /tmp
wget https://github.com/libgd/libgd/releases/download/gd-2.2.5/libgd-2.2.5.tar.gz
tar -xzvf libgd-2.2.5.tar.gz
cd /tmp/libgd-2.2.5
./configure
make
make install
cd /usr/local/src/
git clone https://github.com/agentzh/headers-more-nginx-module
git clone https://github.com/simpl/ngx_devel_kit/
git clone http://web.iti.upv.es/~sto/nginx/
git clone https://github.com/agentzh/echo-nginx-module
git clone https://github.com/chaoslawful/lua-nginx-module.git
git clone https://github.com/slact/nginx_http_push_module/archive/v0.711.tar.gz
git clone https://github.com/FRiCKLE/ngx_cache_purge/
git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module
git clone https://github.com/google/ngx_brotli.git
git clone https://github.com/sto/ngx_http_auth_pam_module
git clone https://github.com/arut/nginx-dav-ext-module
wget http://nginx.org/download/nginx-1.14.2.tar.gz
cd /usr/local/src/ngx_brotli
git submodule update --init --recursive
cd /usr/local/src/
tar -xzvf nginx-1.14.2.tar.gz
cd /usr/local/src/nginx-1.14.2
./configure --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-6hl6ty/nginx-1.14.1=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-mail=dynamic --with-mail_ssl_module --add-dynamic-module=/usr/local/src/ngx_http_auth_pam_module --add-module=/usr/local/src/ngx_brotli --sbin-path=/usr/sbin/nginx
make
apt install checkinstall
apt-get remove -y nginx
checkinstall --install=yes  
service nginx reload

Testar o Modulo Brotli

Se a instalação tiver sido um sucesso é hora de testar o Brotli, localiza o teu nginx.conf geralmente ele está em /etc/nginx/nginx.conf e coloca dentro das chaves do “http” o seguinte código:

    brotli on;
    brotli_comp_level 6;
    brotli_static on;
    brotli_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/vnd.microsoft.icon image/bmp image/svg+xml;

No final de teres colocado o Brotli ativado faz reload no serviço do Nginx desta forma:

service nginx reload

Se não tiver sido exibido nenhum erro faz restart no serviço desta forma:

service nginx restart

Tudo está pronto agora, e já poderás constatar que o teu site está mais rápido!

Have fun 😉 

Luis

Um ser livre pensante e um amante de tecnologia.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *