引自:https://my.oschina.net/plutonji/blog/527797
当你刚安装完Nginx,打开默认的配置文件nginx.conf
时,你会看到http上下文中有这一行配置:
include mime.types;
有的小伙伴就有疑问了:mime.types
是什么文件?在Nginx中又是什么作用呢? 下面我们就来看看,mime.types
究竟是怎么回事。
一、MIME与电子邮件
说起MIME,我们首先要说说电子邮件。
早期的电子邮件只能支持ASCII字符集,而且没法添加附件。后来,人们意识到电子邮件要想走向世界,必须支持更多的字符集,同时,能够随着邮件发送附件也成为越来越迫切的需求。在不断的努力下,MIME——Multipurpose Internet Mail Extension(多用途因特网邮件扩展)于1992年诞生了。通过MIME,我们可以将不同类型的数据(文本、图片、视频)放到一条邮件中。比如,可以写一封既含有英文,又含有中文,再加上一个mp3音乐文件作为附件的邮件。这种含有多种类型数据的文件被称为多部分对象集合(Multipart messages)。这就解决了我们前面说的两个问题。
可以说,没有MIME,就没有今天多姿多彩的互联网。
二、MIME与HTTP协议
除了支持电子邮件的SMTP协议以外,MIME还被其他协议或者程序广泛使用着,这其中就包括大名鼎鼎的HTTP协议。HTTP服务器在发送一份报文主体时,在HTTP报文头部插入解释自身数据类型的MIME头部信息(Content-Type
)。客户端接收到这部分有关数据类型的信息,就能调用相应的程序处理数据。有时候,这个程序是客户端(浏览器)内置的,比如打开一个GIF图片。有时候你需要先安装一个插件,比如第一次观看优酷的视频前你一般需要安装Flash插件。
三、MIME与Nginx
打开Nginx配置文件中的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;
....以下省略....
这里形如text/html
格式的字符串就是用来说明数据类型的,/
前的是主类型,/
之后的是该主类型下的子类型。详细的类型定义在RFC2046中。Nginx通过服务器端文件的后缀名来判断这个文件属于什么类型,再将该数据类型写入HTTP头部的Content-Type
字段中,发送给客户端。
比如,当我们打开OSC的一个页面,看到一个PNG格式的图片的时候,Nginx是这样发送格式信息的:
- 服务器上有enter_narrow.png这个文件,后缀名是png;
- 根据mime.types,这个文件的数据类型应该是image/png;
- 将
Content-Type
的值设置为image/png,然后发送给客户端。
我们在Chrome浏览器中可以看到这个文件返回的头部信息正如上文所写的一样:
这就是mime.types
的作用,小伙伴们了解了吗?
相关推荐
mime-types下载mime-types下载mime-types下载
安装apache和nginx后提示缺少mime可以安装这个
文件的mimeTypes
从Webmaster Toolkit开来的MIME-TYPES列表,应该是比较权威的,有html和Excel两个文件,可以方便处理或导入数据库
MIME (Multipurpose Internet Mail Extensions) is an Internet standard for describes message content types. MIME ( 多用途的网际邮件扩充协议)是用于描述信息内容类型的国际标准。 MIME messages can contain...
class MimeTypes { public static $mime_types = array ( 'apk' => 'application/vnd.android.package-archive', '3gp' => 'video/3gpp', 'ai' => 'application/postscript', 'aif' =>...
用法 import org.overviewproject.mime_types.MimeTypeDetector// ...File file = new File ( " foo.txt " );MimeTypeDetector detector = new MimeTypeDetector ();String mimeType = detector . ...
用法查找MIME /媒体类型的文件名/扩展名通过使用MimeTypes.TryGetMimeType或MimeTypes.GetMimeType方法获取文件名/扩展名的MIME /媒体类型: if ( MimeTypes . TryGetMimeType ( " awesome-file.json " , out var ...
而不是天真地返回第一个可用类型, mime-types只返回false ,所以var type = mime.lookup('unrecognized') || 'application/octet-stream' var type = mime.lookup('unrecognized') || 'application/octet-stream' ...
哑剧 使用从 Unix 机器的/etc/mime.types文件中提取的嵌入式设置 mime 类型扩展 Go 的 pkg/mime。 见mime.go
与BOA配合使用: webserver移植主要分为BOA移植和CGI的移植。
mime-db 这是所有mime类型的数据库。 它由一个单一的公共JSON文件组成,并且不包含任何逻辑,因此可以使用API尽可能使其不受干扰。 它汇总来自以下来源的数据: 安装 npm install mime-db 数据库下载 如果您...
iex> Mime.Types.type("json") "application/json" iex> Mime.Types.extensions("application/json") ["json"] iex> Mime.Types.path("fixtures/users.json") "application/json" 模仿类型 该模块使用Mailcap项目中...
将 Apache mime.types 文件转换为由文件扩展名键入的 C# Dictionary。 有关示例输出,请参阅 ApacheMimeTYpes.cs。 源文件位于: 并根据顶部的权限使用: # This file maps Internet media types to unique file ...
MIME内容类型用于与MIME兼容的通信中,例如在电子邮件或HTTP通信中,以指示要传输的内容的类型。 mime-types库提供了确定和使用有关MIME实体(作为MIME::Type对象的可枚举集合提供)的详细信息的功能。 RFC和供应商...
用于搭建MHA高可用,测试安装包可以运行,并且多次用次安装包安装成功
通过文件名来获取mime type,使用格式: File file = new File("myprofile.png"); MimetypesFileTypeMap mimetypesFileTypeMap = new ...(将文件存放到:resources 路径下的META-INF/mime.types中)
用ruby发送邮件附件的时候,需要安装mailfactory的插件,但是执行安装命令后会报错:mime-type (>=1.13.1)。该压缩包包含了mailfactory-1.4.0和mime-types-1.15两个文件。
RFC-2046 MIME Part 2: Media Types RFC-2047 MIME Part 3: Header Extensions for Non-ASCII Text RFC-2048 MIME Part 4: Registration Procedures RFC-2049 MIME Part 5: Conformance Criteria and Examples ...
mime.json 这是带有MIME类型的文件扩展名的列表,仅此而已。 该列表是从提取的。用法const mime = require ( 'mime.json' ) ;mime [ 'js' ] ; // => 'application/javascript'mime . json ; // => 'application/json...