include mime.types 的作用是加载标准化 MIME 类型映射表,使 Nginx 能根据文件后缀自动设置准确 Content-Type 响应头,从而确保浏览器正确解析 CSS、JS、字体等资源,避免因类型错误导致样式失效、脚本被拒或字体加载失败。

通过 include_mime_types 解决资源类型识别,核心在于让 Web 服务器(尤其是 Nginx)在处理静态文件时,能更准确地根据文件扩展名匹配对应的 MIME 类型,从而正确设置 Content-Type 响应头。这直接影响浏览器是否能正确解析 CSS、JS、字体、图片等资源——类型错配可能导致样式不生效、脚本被阻止执行、字体加载失败等问题。
什么是 include_mime_types?
这是 Nginx 的一个指令,用于引入外部 MIME 类型定义文件(通常是 mime.types),替代或补充内置的 MIME 映射表。Nginx 默认自带一份基础 mime.types,但可能缺少较新格式(如 .woff2、.avif、.webp)或特定项目用到的自定义后缀(如 .mjs、.ts)。
- 它必须写在
http或server块中,且通常放在include mime.types;之后(用于覆盖)或之前(用于补充) - 支持绝对路径或相对于 Nginx 配置目录的相对路径,例如:
include_mime_types /etc/nginx/mime.custom; - 与
types块功能类似,但更轻量,适合只增补类型而不重写整个映射表
常见识别失败场景及补救方式
当浏览器控制台报 “The stylesheet … was not loaded because its MIME type, ‘text/plain’, is not ‘text/css’” 或 JS 被标记为 “Refused to execute script from … because its MIME type (‘text/plain’) is not executable”,基本就是 MIME 类型未识别或误判。
-
新增现代字体格式:在自定义 MIME 文件中添加
font/woff2 woff2;和font/avif avif;,再通过include_mime_types引入 -
支持 ES 模块脚本:加入
application/javascript mjs;,确保.mjs文件返回Content-Type: application/javascript -
修复误判为 text/plain 的情况:检查文件扩展名是否拼写错误(如
.csss)、是否被其他types块覆盖、或是否因 location 匹配顺序导致未走 MIME 匹配逻辑
实际配置示例
假设你有一个自定义 MIME 文件 /etc/nginx/conf.d/custom.mime,内容如下:
types {
text/css css;
application/javascript js mjs;
font/woff2 woff2;
image/avif avif;
image/webp webp;
}
然后在 nginx.conf 的 http 块中加入:
include mime.types; include_mime_types /etc/nginx/conf.d/custom.mime;
注意:若两个文件对同一后缀定义了不同类型,后加载的会覆盖前一个(取决于 include 顺序)。建议把 include_mime_types 放在默认 include mime.types; 之后,以实现“覆盖式增强”。
验证是否生效
重启 Nginx 后,用 curl 检查响应头:
curl -I https://yoursite.com/style.css curl -I https://yoursite.com/app.mjs curl -I https://yoursite.com/icon.woff2
确认 Content-Type 字段符合预期。也可在浏览器开发者工具的 Network 标签页中查看对应资源的响应头。若仍不生效,检查 Nginx 错误日志(error.log)是否有 MIME 文件读取失败或语法错误提示。


















