当你刚安装完Nginx,打开默认的配置文件nginx.conf
时,你会看到http上下文中有这一行配置:javascript
include mime.types;
有的小伙伴就有疑问了:mime.types
是什么文件?在Nginx中又是什么做用呢? 下面咱们就来看看,mime.types
到底是怎么回事。css
提及MIME,咱们首先要说说电子邮件。html
早期的电子邮件只能支持ASCII字符集,并且无法添加附件。后来,人们意识到电子邮件要想走向世界,必须支持更多的字符集,同时,可以随着邮件发送附件也成为愈来愈迫切的需求。在不断的努力下,MIME——Multipurpose Internet Mail Extension(多用途因特网邮件扩展)于1992年诞生了。经过MIME,咱们能够将不一样类型的数据(文本、图片、视频)放到一条邮件中。好比,能够写一封既含有英文,又含有中文,再加上一个mp3音乐文件做为附件的邮件。这种含有多种类型数据的文件被称为多部分对象集合(Multipart messages)。这就解决了咱们前面说的两个问题。java
能够说,没有MIME,就没有今天多姿多彩的互联网。nginx
除了支持电子邮件的SMTP协议之外,MIME还被其余协议或者程序普遍使用着,这其中就包括大名鼎鼎的HTTP协议。HTTP服务器在发送一份报文主体时,在HTTP报文头部插入解释自身数据类型的MIME头部信息(Content-Type
)。客户端接收到这部分有关数据类型的信息,就能调用相应的程序处理数据。有时候,这个程序是客户端(浏览器)内置的,好比打开一个GIF图片。有时候你须要先安装一个插件,好比第一次观看优酷的视频前你通常须要安装Flash插件。web
打开Nginx配置文件中的mime.types
,咱们能看到以下信息:json
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; ....如下省略....
这里形如text/html
格式的字符串就是用来讲明数据类型的,/
前的是主类型,/
以后的是该主类型下的子类型。详细的类型定义在RFC2046中。Nginx经过服务器端文件的后缀名来判断这个文件属于什么类型,再将该数据类型写入HTTP头部的Content-Type
字段中,发送给客户端。浏览器
好比,当咱们打开OSC的一个页面,看到一个PNG格式的图片的时候,Nginx是这样发送格式信息的:服务器
Content-Type
的值设置为image/png,而后发送给客户端。咱们在Chrome浏览器中能够看到这个文件返回的头部信息正如上文所写的同样:app
这就是mime.types
的做用,小伙伴们了解了吗?