leverage images example enable control cache nginx gzip

example - nginx gzip compression images



habilitar la compresiĆ³n gzip con nginx (9)

Acabo de cambiar gzip_http_version 1.1; ser gzip_http_version 1.0; y luego funcionó

Estoy intentando habilitar la compresión gzip para los componentes de mi sitio web. Tengo el servidor ubuntu 11.04 y nginx 1.2.
en mi configuración nginx del sitio web, tengo esto

gzip on; #gzip_min_length 1000; gzip_http_version 1.1; gzip_vary on; gzip_comp_level 6; gzip_proxied any; gzip_types text/plain text/html text/css application/json application/javascript application/x-javascript text/javascript text/xml application/xml application/rss+xml application/atom+xml application/rdf+xml; #it was gzip_buffers 16 8k; gzip_buffers 128 4k; #my pagesize is 4 gzip_disable "MSIE [1-6]/.(?!.*SV1)";

Y las medidas de velocidad de Yslow y Google me están aconsejando usar gzip para reducir la transmisión a través de la red. ahora cuando trato de curl -I my_js_file tengo

curl -I http://www.albawaba.com/sites/default/files/js/js_367664096ca6baf65052749f685cac7b.js HTTP/1.1 200 OK Server: nginx/1.2.0 Date: Sun, 14 Apr 2013 13:15:43 GMT Content-Type: application/x-javascript Content-Length: 208463 Connection: keep-alive Last-Modified: Sun, 14 Apr 2013 10:58:06 GMT Vary: Accept-Encoding Expires: Thu, 31 Dec 2037 23:55:55 GMT Cache-Control: max-age=315360000 Pragma: public Cache-Control: public Accept-Ranges: bytes

¿Alguna idea de lo que hice mal o qué debo hacer para obtener contenido comprimido?


Al igual que Alaa, tuve que agregar gzip_http_version 1.0; (no se especificó previamente ninguna versión) para que funcione (probé con Firefox 27.0.0).


Aquí está mi configuración nginx y funciona.

gzip on; gzip_min_length 1000; gzip_buffers 4 8k; gzip_http_version 1.0; gzip_disable "msie6"; gzip_types text/plain text/css application/json application/javascript application/x-javasc ript text/xml application/xml application/xml+rss text/javascript; gzip_vary on;

Creo que los puntos clave son gzip_disable, gzip_disable y gzip_types.


Como otros han escrito, no es suficiente habilitar la compresión gzip en su servidor; el cliente también debe solicitarla en sus solicitudes a través del encabezado Accept-Encoding: gzip (o un superconjunto de la misma). Los navegadores modernos incluyen este encabezado automáticamente, pero para curl necesitarás incluir uno de los siguientes en tu comando:

  • -H "Accept-Encoding: gzip" : Debería ver el Content-Encoding: gzip en la respuesta (puede necesitar encabezados de salida con el indicador -v de curl), así como algunos resultados aparentemente confusos para el contenido, el gzip real corriente.
  • --compressed : aún debería ver Content-Encoding: gzip en los encabezados de respuesta, pero curl sabe descomprimir el contenido antes de enviarlo.

He experimentado el mismo problema que Alaa, y el problema es causado por el software Antivirus, que actualmente está instalado en mi computadora.

Los servidores proxy y el software antivirus pueden deshabilitar la compresión cuando los archivos se descargan en una máquina cliente. Entonces, si está ejecutando un sitio web en un navegador en una máquina cliente que está usando dicho software antivirus, o que se encuentra detrás de un servidor proxy intermedio (muchos proxies son transparentes, y es posible que ni siquiera sepa que un proxy interviene entre su cliente y servidor web), pueden ser la causa de este problema.

La desactivación del antivirus resolvió mi problema con los navegadores y ni siquiera necesitas configurar gzip_http_version en 1.0.

Espero que te ayude.


Necesita ejecutar:

curl -I --compressed my_js_file

para hacer que Curl envíe un encabezado Aceptar-Codificación para gzip, el servidor solo comprimirá el contenido si el cliente envía un encabezado que dice que lo aceptará.

NB puedes escribir:

gzip_disable "msi6"

en lugar de usar una expresión regular para deshabilitar en IE 5.5 y 6, y no necesita especificar text / html como un tipo porque siempre está comprimido siempre que gzip esté activado.


No puedo encontrar nada obviamente incorrecto con su configuración, generalmente gzip on & gzip_types application / x-javascript sería suficiente para que funcione. Si todo funciona bien, obtendrá un "Content-Encoding: gzip" devuelto a usted.

TENER EN CUENTA: Tengo mucha más coherencia con las herramientas de desarrollador de GOOGLE (curl simplemente no se comporta de la manera que lo haría un navegador).

En Chrome, haga clic derecho y vaya a "inspeccionar elemento", luego vaya a "red" (luego vuelva a cargar la página si es necesario), luego haga clic en un recurso y verifique la pestaña del encabezado, el resultado debería ser así (observe el contenido -encoding es gzip, yay):

Request URL:https://ssl.gstatic.com/gb/js/sem_a3becc1f55aef317b63a03a400446790.js Request Method:GET Status Code:200 OK (from cache) Response Headersview source age:199067 cache-control:public, max-age=691200 content-encoding:gzip content-length:19132 content-type:text/javascript date:Fri, 12 Apr 2013 06:32:58 GMT expires:Sat, 20 Apr 2013 06:32:58 GMT last-modified:Sat, 23 Mar 2013 01:48:21 GMT server:sffe status:200 OK vary:Accept-Encoding version:HTTP/1.1 x-content-type-options:nosniff x-xss-protection:1; mode=block

De todas formas, si está SEGURO de que su contenido no se está comprimiendo, normalmente me pongo en funcionamiento muy rápido con lo siguiente:

## Compression gzip on; gzip_buffers 16 8k; gzip_comp_level 4; gzip_http_version 1.0; gzip_min_length 1280; gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/bmp; gzip_vary on;

Puede probar esto en reemplazo de su código y / o modificar sus valores de uno en uno para ayudarlo a localizar su problema.

Recuerde reiniciar o recargar nginx después de cambiar la configuración.

También puede ser útil verificar tus registros y ver si hay algo interesante allí si todavía estás atascado.


Solo estoy adivinando aquí, pero creo que es posible que tengas que aumentar tu tamaño de búfer gzip.

Estos son los archivos que el navegador extrae del dominio. El número a la derecha es el tamaño de descarga del archivo.

Es posible que no pueda distinguir a partir de la captura de pantalla, pero todos los archivos de contenido de texto tienen gzip, excepto el archivo js que menciona en su pregunta. En la captura de pantalla, el archivo js es el archivo en verde, con un tamaño de aproximadamente 200K. Este tamaño de archivo es mayor que el que ha especificado para sus búferes gzip (128K).

Los documentos del módulo Gzip realmente no dan una buena indicación de para qué se usan los búferes gzip (si los búferes se utilizan para datos comprimidos o no comprimidos). Sin embargo, la siguiente publicación parece indicar que el tamaño del búfer debe ser mayor que el tamaño del archivo descomprimido: archivos grandes con NGINX, GZip y SSL


Tuve que habilitar gzip en mi configuración /etc/nginx/nginx.conf :

gzip on; gzip_disable "msie6"; gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;

Tenga en cuenta que tuve que agregar application/javascript a la configuración estándar de gzip_types .