¿Cómo sirvo archivos precomprimidos con nginx para que se muestren como texto en el navegador?

17

Tengo un montón de archivos de registro comprimidos que me gustaría servir con nginx. Quiero que se sirvan de tal manera que el navegador los infle automáticamente. Supongo que eso significa que necesito nginx para enviar los archivos como .gz con un encabezado de texto / sin formato. Esto se puede hacer en apache con algo como:

<FilesMatch *.gz>
    ForceType text/plain
</FilesMatch>
Ben
fuente

Respuestas:

24

Necesitas el HttpGzipStaticmódulo para esto. Pon gzip_static on;tu configuración y crea tus .gzarchivos. Deberá conservar tanto el archivo comprimido como el original, luego puede solicitar, por ejemplo, /css.cssy recibir el archivo comprimido/css.css.gz

adamse
fuente
Una nota menor: se sugiere que los tiempos de modificación de ambos archivos (mtime) sean los mismos.
Alexander Azarov
2
Y puede probar que está funcionando curl --header "Accept-Encoding: gzip" -I your_url, y sin el encabezado para verificar que aún sirve el archivo sin comprimir si es necesario.
Tom
Aparentemente, este enfoque NO funciona con índices como index.html.gz, si lo agrega a la lista de índices utilizando "index index.html.gz", se servirá como una descarga cuando intente acceder a "$ url / ". Todavía estoy buscando una solución que también haga navegables los índices comprimidos.
Sorin
el archivo original no es necesario a menos que use try_files mailman.nginx.org/pipermail/nginx/2012-June/034102.html . Lo intenté con gunzip ony try_files serverfault.com/questions/571733/…
rofrol