Cupom de US$10 da Digital Ocean

Nginx - Habilitar gzip para compressão de arquivos e respostas

Nginx - Habilitar gzip para compressão de arquivos e respostas

Você deseja configurar o gzip em seu servidor Nginx? Vamos ver nos passos abaixo como habilitar a compressão no Nginx e deixar suas requisições mais leves.

Por baixo dos panos o Nginx usa o módulo ngx_http_gzip_module para habilitar a compressão via gzip. É ele que comprime as respostas http e pode atuar tanto em arquivos estáticos, como JPG, CSS, JS, etc. Como também em tipos de retorno de texto, json e outras.

Alterando o arquivo de configurações

Em instalações padrão Linux o arquivo de configurações do Nginx fica localizado em /etc/nginx/nginx.conf. Use seu editor de textos favorito para abrir o arquivo.

$ sudo nano /etc/nginx/nginx.conf

Dentro do contexto http localize a parte onde fala sobre gzip, como no trecho abaixo. Caso não tenha isso, você pode adicionar.

##
# Gzip Settings
##

gzip on;
gzip_disable "msie6"; #Desabilita gzip em navegadores IE 6 (não suportam gzip)
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; #Tipos de resposta para comprimir
gzip_min_length 500; # Tamanho mímimo da resposta para ser comprimida

Você pode alterar os valores conforme a sua necessidade. Feito isso, salve o arquivo

Testando a configuração

Para testar o arquivo de configurações antes de colocar no ar, o próprio nginx tem uma ferramenta.

$ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Caso algo não esteja ok, o retorno irá informar. Arrume o que precisar, salve e rode novamente o teste.

Reiniciar o servidor nginx

Para reiniciar o servidor nginx, basta rodar o comando abaixo:

$ sudo service nginx reload

Testando o gzip

Para testar o gzip você pode utilizar a ferramenta Curl, disponível na maioria das distribuições Linux, e verificar no cabeçalho do retorno se a resposta está sendo comprimida.

$ curl -I -H 'Accept-Encoding: gzip,deflate' https://seusite.com.br/file.css

HTTP/1.1 200 OK
Server: nginx
Date: Sun, 05 Mar 2017 18:45:31 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Whom: l1-com-cyber
Strict-Transport-Security: max-age=15768000; includeSubdomains
Link: ; rel="https://api.w.org/"
X-Varnish: 1812270 1794298
Age: 475
Via: 1.1 varnish-v4
Front-End-Https: on
Content-Encoding: gzip

No final dos cabeçalhos de retorno podemos ver o valor Content-Encoding: gzip - Indicando que o nginx está utilizando gzip nesta requisição

Comparativos

Para ilustrar o quanto você pode conseguir diminuir o tamanho das requisições com gzip habilitado temos abaixo listando alguns testes comparando o nível de compressão selecionado (gzip_comp_level, que por padrão vem 6) e tamanhos de arquivos:

text/html - phpinfo():

0    55.38 KiB (100.00% of original size)
1    11.22 KiB ( 20.26% of original size)
2    10.89 KiB ( 19.66% of original size)
3    10.60 KiB ( 19.14% of original size)
4    10.17 KiB ( 18.36% of original size)
5     9.79 KiB ( 17.68% of original size)
6     9.62 KiB ( 17.37% of original size)
7     9.50 KiB ( 17.15% of original size)
8     9.45 KiB ( 17.06% of original size)
9     9.44 KiB ( 17.05% of original size)
application/x-javascript - jQuery 1.8.3 (Uncompressed):

0    261.46 KiB (100.00% of original size)
1     95.01 KiB ( 36.34% of original size)
2     90.60 KiB ( 34.65% of original size)
3     87.16 KiB ( 33.36% of original size)
4     81.89 KiB ( 31.32% of original size)
5     79.33 KiB ( 30.34% of original size)
6     78.04 KiB ( 29.85% of original size)
7     77.85 KiB ( 29.78% of original size)
8     77.74 KiB ( 29.73% of original size)
9     77.75 KiB ( 29.74% of original size)

Testes retirados de: https://serverfault.com/questions/253074/what-is-the-best-nginx-compression-gzip-level


Para mais informações completas confira a documentação oficial do Nginx: https://nginx.org/en/docs/http/ngx_http_gzip_module.html

Compartilhe

URL

Você também pode gostar de:

Comentários