一   MIME简介  了解

++++++++++++'MIME简介'++++++++++++1)全称'Multipurpose Internet Mail Extension(多用途因特网邮件扩展)'最初是为了满足'电子邮件'支持'多字符集'及'附件'而出现的2)通过MIME,我们可以写一封'既含有英文'、'又含有中文',再加上一个'文件作为附件'的邮件,这种含有'多种类型数据的文件'被称为多部分对象集合(Multipart messages)3)MIME Type '不是个人指定'的,是经过 'ietf 组织协商',以' RFC 的形式'作为建议的'标准'发布在网上的4)大多数的' Web 服务器'和'用户代理'都会'支持'这个规范备注: 'Email 附件的类型'也是通过 'MIME Type 指定'的+++++++++++'媒体类型'+++++++++++媒体类型通常是'通过 HTTP 协议',由 'Web 服务器'告知'浏览器'的'如何告知': 是通过 'Content-Type'这个响应头来表示的例如:Content-Type: text/htmlL,表示'内容是 text/html 类型',也就是'超文本文件'

二    MIME-Type和Content-Type的关系

++++++++++'MIME-type和Content-Type的关系'++++++++++1)HTTP服务器在'响应'一份'报文主体'时,在HTTP'报文头部'插入'解释自身数据类型'的MIME头部信息-->'Content-Type'2)当web'服务器收到'静态的资源文件请求时,依据'请求文件的后缀名'在服务器的'MIME配置文件中找'到对应的'MIME Type',再根据MIME Type'设置HTTP Response的Content-Type',然后'客户端如浏览器'根据Content-Type的值'处理文件'

Content-Type详解

①  服务端如何处理静态资源文件

媒体类型通常是通过 'HTTP' 协议,由 Web 服务器过'Content-Type值'来告知'浏览器'的例如:'响应头' -->Content-Type: text/html

②  客户端如何处理Content-Type值请求

浏览器是'如何区分'它们,进而决定'什么内容'用'什么形式'来显示呢?

三   nginx中关于媒体类型

nginx访问静态文件不下载

①  nginx中的 mime.types文件

'include'表示'纳入mime.types文件'的配置

举例: 形如text'/html格式'的字符串就是用来说明'数据类型'的1)'/'前的是'主'类型2)'/之后'的是该主类型下的'子类型'备注:详细的类型定义在'RFC2046'中

nginx压缩ttf文件踩坑 mine.types的作用

gzip_types

解决nginx下加载eot|otf|ttf|woff|svg等404 错误问题

②  default_type

 作用:在'mime.type'文件中找不到'文件'映射的'type'时'采用'默认的'default_type'如果web程序'没设置,'Nginx也'没找到'对应文件的'扩展名'的'type'话,就使用'默认的Type'

③  types

四    案例讲解

比如:当我们打开'chrome浏览器'看一个'PNG格式的图片'的时候,Nginx是这样'发送格式信息'的:1)服务器上'有wzj.png'这个文件,后缀名是png;2)根据'include mime.types'查找到这个文件的'数据类型'应该是'image/png';3)将'Content-Type'的值设置为'image/png',然后发送给'客户端(浏览器)'

1)如果处理'本地的'文件,在'没有人告诉'浏览器某个文件的 MIME Type 的情况下,浏览器也会做一些'默认的处理'2)'默认的处理'和你'在操作系统中'给文件配置的 'MIME Type 有关'Windows 下: 打开注册表的"HKEY_LOCAL_MACHINESOFTWAREClassesMIMEDatabaseContent Type"主键,可以看到'所有 MIME Type' 的配置信息Linux下:通过一个'文本文件静态'关联数据库,负责将'application'(应用程序描述文件)与'MIME type'(Shared MIME Database)对应起来Centos7该'数据库'为:/usr/share/applications/mimeinfo.cache

Linux MIME Type

+++++++++ 'Content-Type更通用的格式' +++++++++Content-Type: [type]/[subtype]; parameter用于定义网络文件的'类型'和网页的'编码',决定浏览器将以'什么形式'、'什么编码读取'这个文件Content-Type 标头是'服务器'告诉客户端'实际返回的内容'的'内容类型'++++++++++'语法格式'++++++++++Content-Type: text/html; charset=utf-8

①   查看文件的MIME Type

格式: mimetype filename 备注: mimetype命令'需要安装'yum install perl-File-MimeInfo.noarch -y

②根据文件的MIME type找到打开方式

gio mime mime_type

五   思考

(1)浏览器对于一个文件类型是如何判断渲染显示还是下载

浏览器的'原则'是能'打开'就打开-->'在自己的媒体类型中',不能打开'就下载'1)每个'浏览器内置支持'的 Content-Type 类型表各不相同,这导致了'某些类型字符串'在'某些浏览器下'不被识别2)另外如果'出现错误'的 Content-Type 类型,各个浏览器又会'以不同的方式'处理

思考: 如果客户端请求-->'request'的'Content-Type'和服务器响应-->'response'的'Content-Type'不一致呢?

(2)对于特定的文件类型,强制让其显示内容,而不是不能识别导致下载

常见: 'application/octet-stream'是'HTTP规范中'Content-Type的一种.意思是:'未知'的'应用程序'文件,浏览器一般'不会自动执行'或'询问执行',表示这是个'二进制流',需要'下载到本地'后由'用户端环境决定'如何使用备注: '如果'提交文件的话,只能'提交一个文件',后台'接收参数'只能有'一个',而且只能是流(或者字节数组)

nginx配置让任何文件在浏览器中显示文本text/plain或者xml,而不是下载

已知: 对于'text/plain'格式的文件,可以在'任何浏览器'中'直接打开'而不会下载需求: 在nginx中配置'perl'这种特殊结尾的文件为'直接打开',而不是下载+++++++++'从三个粒度来解析'+++++++++
​
主要作为'对比'实验

①  默认是下载

说明: nginx的无法识别'perl结尾的文件',能识别'pl和pm'结尾的文件,'并且'如果安装了对应的模块,并在nginx种做了相应的配置,则会'解析该脚本'后返回内容给客户端

②  方式1:全局

vim /etc/nginx/mime.types说明: 最好不要'一种后缀文件'对应'多种媒体类型'注意: 修改之后一定要'restart','reload'不生效备注: 可以'写在同一行',以'空格隔开';也可以'另起一行'细节: 这个方法修改后'影响所有nginx网站'的配置

③  方式2:只针对某种文件类型(推荐)

备注: 甚至可以'自定义文件'类型,但是浏览器可能'不能'按照该种格式解析-->因为是'伪造'的
单独打开'某个网站'的配置文件,在server中修改案例: 所有目录下'以perl结尾的文件'显示为'text/plain'格式location ~ .*\.perl$ {add_header Content-Type text/plain;
}

④    方式3:只针对某个站点的某个目录下的文件

location /perl/ {'location嵌套'location ~* .*\.perl$ {add_header Content-Type text/plain;}

⑤    效果展示

(6)强制设置所有文件都是下载的

header中Content-Disposition的作用与使用方法

location / {root   html;add_header Content-Disposition "attachment; filename=$1";  index  index.html
}

(7)nginx支持播放mkv视频

#nginx.conf
#在server > location块内加入
types{video/webm  mkv;
}

mime.types使用案例

案例补充1

常见的Content-Type

文件在线预览和下载

X-Accel-Redirect

局部覆盖默认的content-type响应头并自定义content-type​​​​​​​

Nginx(十八)mime.types的作用相关推荐

  1. 启动nginx时,报错:open() “/etc/nginx/mime.types“ failed

    配置文件:/etc/nginx/nginx.conf中有include mime.types字段,启动时报错:open() "/etc/nginx/mime.types" fail ...

  2. MIME与mime.types

    当你刚安装完Nginx,打开默认的配置文件nginx.conf时,你会看到http上下文中有这一行配置: include mime.types; 有的小伙伴就有疑问了:mime.types是什么文件? ...

  3. nginx mime.types php,使用重写和有效的mime类型配置NGINX的正确方法

    我正在尝试测试NGINX并可能从Apache切换 . 我读过nginx的速度要快得多,但我希望能够做到这一点 . 我在使用NGINX的配置以匹配我的Apache设置时遇到问题 - 主要是重写规则 . ...

  4. Nginx性能优化(十八)

    文章目录 1. 性能优化概述 2. 压力测试工具 3. 系统性能优化 4. 代理服务优化 5. 静态资源优化 5.1 静态资源缓存 5.2 静态资源读取 5.3 静态资源压缩 5.4 防止资源倒链 5 ...

  5. Nginx 模块开发(学习笔记十八)

    1. Nginx 介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,它的发音为"engine X", 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP ...

  6. 十八、部署 Vue.js 项目到生产环境

    本章概要 构建发布版本 部署 项目开发完毕并测试后,就要准备构建发布版本,部署到生产环境. 18.1 构建发布版本 在构建发布版本前,注意将项目代码中用于调试的 alert.debugger.cons ...

  7. #章节十八:收发邮件

    章节十八:收发邮件 目录 章节十八:收发邮件 1. 明确项目目标 2. 分析过程,拆解项目 3. 逐步执行,代码实现 3.1 版本1.0:学习模块,发一封简单邮件 3.2 版本2.0:给自己发一封完整 ...

  8. Spring Cloud之(十八)微服务网关GateWay

    十八.微服务网关GateWay Zuul 1.x 是一个基于阻塞 IO 的 API Gateway 以及 Servlet:直到 2018 年 5 月,Zuul 2.x(基于Netty,也是非阻塞的,支 ...

  9. Nginx(十九)nginx配置php

    一   了解的基础知识 1) nginx'本身不能'处理PHP,它只是个'web服务器-->只能处理静态请求',当接收到请求后,如果是php请求,则'发给php解释器处理',并把结果返回给'we ...

最新文章

  1. c#学习体会:使用 ref 和 out 传递数组
  2. Java生鲜电商平台-高并发核心技术订单与库存实战
  3. Asp.net 面向接口可扩展框架之核心容器
  4. linux命令fdisk,Linux fdisk 命令使用详解
  5. 微软拿下美国国防部100亿美元云合同,亚马逊不干了...
  6. 火狐浏览器的导出和导入
  7. Python包和__init__.py文件
  8. Python标准模块--multiprocessing
  9. linux添加swap分区【转】
  10. c语言入门教程怎么编程,从零开始的C语言入门教程-编程语言的基础
  11. 用PS去掉图片中的文字
  12. 电脑ps计算机磨皮,ps磨皮教程
  13. 3d打印切片软件 linux,玩好3D打印机 从19款3D切片软件开始
  14. 没有ADC的MCU如何实现音频播放?
  15. loader-wizard.php,安装ioncube扩展
  16. Springboot链接SqlServer配置并通过JPA操作实战
  17. 【游戏逆向】《**明月刀》BUFF及技能预判
  18. 推荐几款好用的企业级文档管理软件
  19. 【1024社区大奖】助你狂揽大奖[保姆级教程①]
  20. 有什么软件可以复制并粘贴文件?

热门文章

  1. 商品管理-运营指挥室 看板
  2. hive union all 使用
  3. 控件 ListView1 的类 MSComctlLib.ListView 不是一个已加载的控件类
  4. 谷歌浏览器手动设置Cookie
  5. HP M132SNW打印机使用心得
  6. java swing中setVisible(true)方法的真正作用
  7. ssl证书的申请方法
  8. 青少年成长管理 第10章 成长计划
  9. 家园防线 | 全栈物联网灌溉系统技术指南
  10. cxonev4验证用户_CXONE v4.31版本安装序列号