24

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; } 

1 Answer 1

17

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.

Sign up to request clarification or add additional context in comments.

3 Comments

Hi, thanks. That note is interesting, but it's relative to the mainline 1.5 branch. The stable branch is 1.4 and it's still using the old mime type. Also, yes, I do use http_gzip_static in the locations from which I serve static pre-gzipped files.
If you add both application/javascript and application/x-javascript, then your configuration will work even after upgrade to nginx 1.5+. But there is no reason for text/javascript unless your application produces it.
Hi guys, I found a better answer in below link: serverfault.com/questions/186965/…

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.