2010-03-17 11 views
48

¿Cómo puedo comprobar que nginx está sirviendo la versión .gz de los archivos estáticos, si existen?¿Cómo puedo verificar que el módulo nginx gzip_static esté funcionando?

He compilado nginx con el módulo gzip estático, pero no veo ninguna mención de la versión .gz que se sirve en mis registros. (He minimizado los archivos global.js y global.css con versiones .gz de ellos en el mismo directorio).

La parte pertinente de nginx.conf se parece a esto:

gzip on; 
gzip_static on; 
gzip_http_version 1.0; 
gzip_disable "MSIE [1-6]\."; 
gzip_vary on; 

gzip_comp_level 2; 
gzip_proxied any; 
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript; 

Cualquier indicador sería apreciado.

Respuesta

81

Utilice strace. Primero, necesita detectar el PID del proceso nginx:

# ps ax | grep nginx 
25043 ?  Ss  0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf 
25044 ?  S  0:02 nginx: worker process 

Ok, entonces 25044 es el proceso de trabajo. Ahora, lo rastreamos:

# strace -p 25044 2>&1 | grep gz 
open("/var/www/css/ymax.css.gz", O_RDONLY|O_NONBLOCK) = 438 
open("/var/www/css/patches/patch_my_layout.css.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory) 
open("/var/www/yaml/core/iehacks.css.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory) 
open("/var/www/js/koznazna5.js.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory) 
open("/var/www/css/ymax.css.gz", O_RDONLY|O_NONBLOCK) = 216 

Como puede ver, está tratando de encontrar las versiones .gz de los archivos.

+12

Nota: 'strace' admite varios PID al agregar el argumento' -p xyz' varias veces. Útil cuando tienes múltiples procesos de trabajador nginx. –

+0

Si tocas los archivos de activos en el servidor y utilizas una pestaña de modo de incógnito/privado en tu navegador, obligarás a los archivos a volver a servirse para que la técnica anterior pueda ofrecer resultados garantizados sin cachés en el camino (con suerte) –

+0

Use 'dtruss' en OSX –

15

Me desactivar la compresión automática y registrar gzip_ratio:

http { 
    gzip off; 
    gzip_static on; 

    log_format log_with_ratio "... $gzip_ratio ..."; 

    server { 
     access_log /var/log/nginx/file.log log_with_ratio; 
    } 
} 

Nota, que puede anular gzip, gzip_static y access_log por los niveles de servidor y ubicación.

+2

Esto es realmente brillante para probar si nginx está gzip sobre la marcha, es decir (gzip on) pero si intentas usarlo para ver si gzip_static está activado, solo mostrará un guión ... (usando nginx 1.2.6)Sin embargo, si tienes gzip_static activado y gzip desactivado y la codificación de contenido es gzip, creo que puedes asumir que funciona correctamente. – concept47

19

Cambia el contenido del archivo no comprimido. Y luego touch ambos archivos (al mismo tiempo, es decir: en la misma instancia de touch). Si al cargar el archivo en un navegador (caché borrado) obtiene el archivo no modificado, entonces nginx sirve el archivo static-cached-gzipped.

Una manera fácil de evitar “Qué acabo de buscar el caché?” preocupaciones es ir a buscar desde la línea de comandos con curl desde el rizo no lo hace caché.

-3

Normalmente uso las herramientas de desarrollo de Chrome y miro el tamaño de los archivos en cuestión.

+0

¿De qué manera lo ayudará a saber si el servidor gzipó al vuelo o si estaba utilizando el archivo ya precomprimido? – RationalDev

+0

Punto de Dios. Gracias por el menos :) – Spock

+0

El menos no era yo. – RationalDev

1

Hay es una pista que he notado con respecto al encabezado de respuesta ETag.

Si archivo estático es servida por nginx, entonces encabezado se ve así: ETag: "135a-BQhu6KL71dyeCXcVZme6ug", sin embargo, cuando Nginx está comprimiendo la respuesta (a través del módulo gzip) que se parece a esto: ETag: W/"135a-BQhu6KL71dyeCXcVZme6ug" (aviso W/).

Puede usar esto así como Content-Encoding: gzip para distinguir archivos estáticos simples, archivos estáticos precomprimidos y archivos comprimidos sobre la marcha.

Cuestiones relacionadas