Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

nginx mime types and gzip

Nginx allows you to map file extensions to mime types. As the documentation says, it even comes with a pre built list of mime types (pasted at the end of the question).

I've always trusted this list, and things work great, but now I've noticed that some types are missing.

What about application/javascript and application/json?

It uses the old deprecated application/x-javascript, and I imagine that it's to ensure IE support... but is it really ok?


Also, what types should be gzipped?

I've always used the list in the following snippet, although I admit that it was just part of an example nginx conf file, that I used as an example a few years ago, when I first started working with nginx.

Should I also include application/json?

http {
    include mime.types;
    default_type application/octet-stream;

    gzip_types text/plain text/xml text/css
               text/comma-separated-values
               text/javascript application/x-javascript
               application/atom+xml;

    # text/html is included in the gzip list by default                   

    # ...
}

The default mime types in /etc/nginx/mime.types.

types {
    text/html                             html htm shtml;
    text/css                              css;
    text/xml                              xml;
    image/gif                             gif;
    image/jpeg                            jpeg jpg;
    application/x-javascript              js;
    application/atom+xml                  atom;
    application/rss+xml                   rss;

    text/mathml                           mml;
    text/plain                            txt;
    text/vnd.sun.j2me.app-descriptor      jad;
    text/vnd.wap.wml                      wml;
    text/x-component                      htc;

    image/png                             png;
    image/tiff                            tif tiff;
    image/vnd.wap.wbmp                    wbmp;
    image/x-icon                          ico;
    image/x-jng                           jng;
    image/x-ms-bmp                        bmp;
    image/svg+xml                         svg svgz;
    image/webp                            webp;

    application/java-archive              jar war ear;
    application/mac-binhex40              hqx;
    application/msword                    doc;
    application/pdf                       pdf;
    application/postscript                ps eps ai;
    application/rtf                       rtf;
    application/vnd.ms-excel              xls;
    application/vnd.ms-powerpoint         ppt;
    application/vnd.wap.wmlc              wmlc;
    application/vnd.google-earth.kml+xml  kml;
    application/vnd.google-earth.kmz      kmz;
    application/x-7z-compressed           7z;
    application/x-cocoa                   cco;
    application/x-java-archive-diff       jardiff;
    application/x-java-jnlp-file          jnlp;
    application/x-makeself                run;
    application/x-perl                    pl pm;
    application/x-pilot                   prc pdb;
    application/x-rar-compressed          rar;
    application/x-redhat-package-manager  rpm;
    application/x-sea                     sea;
    application/x-shockwave-flash         swf;
    application/x-stuffit                 sit;
    application/x-tcl                     tcl tk;
    application/x-x509-ca-cert            der pem crt;
    application/x-xpinstall               xpi;
    application/xhtml+xml                 xhtml;
    application/zip                       zip;

    application/octet-stream              bin exe dll;
    application/octet-stream              deb;
    application/octet-stream              dmg;
    application/octet-stream              eot;
    application/octet-stream              iso img;
    application/octet-stream              msi msp msm;

    audio/midi                            mid midi kar;
    audio/mpeg                            mp3;
    audio/ogg                             ogg;
    audio/x-m4a                           m4a;
    audio/x-realaudio                     ra;

    video/3gpp                            3gpp 3gp;
    video/mp4                             mp4;
    video/mpeg                            mpeg mpg;
    video/quicktime                       mov;
    video/webm                            webm;
    video/x-flv                           flv;
    video/x-m4v                           m4v;
    video/x-mng                           mng;
    video/x-ms-asf                        asx asf;
    video/x-ms-wmv                        wmv;
    video/x-msvideo                       avi;
}
like image 291
tompave Avatar asked Feb 14 '14 20:02

tompave


People also ask

Does nginx support gzip?

You can configure Nginx to use gzip to compress the files it serves on the fly. Those files are then decompressed by the browsers that support it upon retrieval with no loss whatsoever, but with the benefit of a smaller amount of data to transfer between the web server and browser.

What is MIME types in nginx?

types; default_type application/octet-stream; gzip_types text/plain text/xml text/css text/comma-separated-values text/javascript application/x-javascript application/atom+xml; # text/html is included in the gzip list by default # ... }

How do I know if gzip is enabled nginx?

You can tell using Developer Tools (F12). Go to the Network tab, select the file you want to examine and then look at the Headers tab on the right. If you are gzipped, then you will see that in the Content-Encoding.


1 Answers

It uses the old deprecated application/x-javascript, and I imagine that it's to ensure IE support... but is it really ok?

Well, no:

Changes with nginx 1.5.4                                         27 Aug 2013

*) Change: the "js" extension MIME type has been changed to
   "application/javascript"; default value of the "charset_types"
   directive was changed accordingly.

http://nginx.org/en/CHANGES

Should I also include application/json?

Why not? The default mime.types file from nginx only contains MIME types for more or less common file extensions. And it certainly isn't very common to have json static files.

Also, what types should be gzipped?

You may include MIME types for all well compressible content that you have on your site. But for static files it will be better to use gzip static module.

like image 126
VBart Avatar answered Oct 13 '22 11:10

VBart