Comment puis-je servir des fichiers pré-compressés avec nginx afin qu'ils soient affichés sous forme de texte dans le navigateur?

17

J'ai un tas de fichiers journaux gzippés que j'aimerais utiliser avec nginx. Je veux qu'ils soient servis de telle manière qu'ils soient automatiquement gonflés par le navigateur. Je suppose que cela signifie que j'ai besoin de nginx pour envoyer les fichiers au format .gz avec un en-tête text / plain. Cela peut être fait en apache avec quelque chose comme:

<FilesMatch *.gz>
    ForceType text/plain
</FilesMatch>
Ben
la source

Réponses:

24

Vous avez besoin du HttpGzipStaticmodule pour cela. Mettez gzip_static on;votre configuration et créez vos .gzfichiers. Vous devrez conserver à la fois le fichier compressé et le fichier d'origine, vous pouvez alors demander, par exemple, /css.csset recevoir le fichier compressé/css.css.gz

admirer
la source
Une remarque mineure: il est suggéré que les temps de modification des deux fichiers (mtime) soient les mêmes.
Alexander Azarov
2
Et vous pouvez tester qu'il fonctionne avec curl --header "Accept-Encoding: gzip" -I your_urlet sans l'en-tête - pour vérifier qu'il sert toujours le fichier non compressé si nécessaire.
Tom
Apparemment, cette approche ne fonctionne PAS avec des index comme index.html.gz, si vous l'ajoutez à la liste des index en utilisant "index index.html.gz", elle sera servie en téléchargement lorsque vous essayez d'accéder à "$ url / ". Je suis toujours à la recherche d'une solution qui rendrait également les index gzippés navigables.
sorin
le fichier d'origine n'est pas nécessaire sauf si vous utilisez try_files mailman.nginx.org/pipermail/nginx/2012-June/034102.html . J'ai essayé avec gunzip onet try_files serverfault.com/questions/571733/…
rofrol