Estou trabalhando com o nginx 1.4.4 sendo executado no Ubuntu 12.04.4 .
O nginx é um proxy reverso de um cluster de servidores de aplicativos Rails .
Arquivos estáticos (principalmente ativos) são exibidos diretamente, sem atingir os servidores de aplicativos.
Configurei-o para gzip
de respostas e para usar arquivos pré-compactados quando disponíveis.
http {
gzip on;
gzip_http_version 1.0;
gzip_proxied any;
# other ngx_http_gzip_module directives...
server {
# proxy configuration
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
# root is inherited
try_files $uri =404;
error_page 404 /404.html;
}
}
}
Isso funciona.
Testei-o usando um recurso real pré-zipado e um fictício não compactado com o mesmo nome, mas conteúdo diferente:
/assets/application-a45d6...e2593.css # dummy content
/assets/application-a45d6...e2593.css.gz # real CSS
Eu pude ver que alternar gzip_static
on
e off
faria com que o nginx exibisse corretamente a versão esperada do arquivo.
Por enquanto, tudo bem.
No entanto , essa configuração só funciona se a versão não compactada do arquivo também estiver presente. Ter apenas a versão pré-compactada causará um erro 404.
A documentação diz:
gzip_static
With the “always” value (1.3.6), gzipped file is used in all cases, without checking if the client supports it. It is useful if there are no uncompressed files on the disk anyway or the ngx_http_gunzip_module is used.
(sim: tentei on
e always
e também tentei adicionar gunzip on
. Nada mudou)
Parece sugerir que ter somente as versões compactadas dos arquivos está ok. É este realmente o caso? Há algo de errado na minha configuração?