當你剛安裝完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
的做用,小夥伴們瞭解了嗎?