0
0
Nginxdevops~5 mins

MIME types configuration in Nginx - Commands & Configuration

Choose your learning style9 modes available
Introduction
Web servers need to tell browsers what kind of files they are sending. MIME types configuration helps the server label files correctly so browsers know how to handle them.
When you want your web server to serve images, videos, or documents with the correct file type.
When you add new file types to your website that the server does not recognize by default.
When you want to fix issues where browsers download files instead of displaying them.
When you want to improve security by controlling which file types your server sends.
When you want to customize how your server handles uncommon file extensions.
Config File - mime.types
mime.types
types {
    text/html                             html htm shtml;
    text/css                              css;
    text/xml                              xml;
    image/gif                             gif;
    image/jpeg                            jpeg jpg;
    application/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/font-woff               woff;
    application/java-archive            jar war ear;
    application/json                   json;
    application/mac-binhex40            hqx;
    application/msword                  doc;
    application/pdf                    pdf;
    application/postscript             ps eps ai;
    application/rtf                    rtf;
    application/vnd.apple.mpegurl       m3u8;
    application/vnd.ms-excel            xls;
    application/vnd.ms-fontobject       eot;
    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           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/mp2t                       ts;
    video/mp4                        mp4;
    video/mpeg                       mpeg mpg;
    video/quicktime                  mov;
    video/webm                       webm;
    video/x-flv                     flv;
    video/x-m4v                     m4v;
    video/x-ms-wmv                  wmv;
    video/x-msvideo                 avi;
}

This file tells nginx which MIME types to use for different file extensions.

The types block maps file extensions like html or jpg to their correct MIME types like text/html or image/jpeg.

This helps browsers understand how to display or handle the files they receive.

Commands
This command tests the nginx configuration files for syntax errors before restarting the server.
Terminal
sudo nginx -t
Expected OutputExpected
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
This command reloads nginx to apply the new MIME types configuration without stopping the server.
Terminal
sudo systemctl reload nginx
Expected OutputExpected
No output (command runs silently)
This command checks the HTTP headers for a JPEG file to verify the correct MIME type is sent.
Terminal
curl -I http://localhost/example.jpg
Expected OutputExpected
HTTP/1.1 200 OK Server: nginx/1.24.0 Content-Type: image/jpeg Content-Length: 12345 Connection: keep-alive
-I - Fetch only HTTP headers without the body
Key Concept

If you remember nothing else from this pattern, remember: configuring MIME types correctly tells browsers how to handle your files safely and properly.

Common Mistakes
Editing the MIME types file but forgetting to reload nginx.
The server keeps using the old configuration, so changes have no effect.
Always run 'sudo nginx -t' to test and then 'sudo systemctl reload nginx' to apply changes.
Adding incorrect or unsupported MIME types with wrong syntax.
Nginx fails to start or ignores the configuration, causing errors or wrong file handling.
Use the correct syntax inside the 'types' block and verify with 'nginx -t' before reloading.
Summary
The mime.types file maps file extensions to correct MIME types for nginx.
Test nginx configuration syntax with 'nginx -t' before applying changes.
Reload nginx with 'systemctl reload nginx' to apply MIME type updates without downtime.